[Do it! 플러터] 플러터 다시 끄집어내기

Heeyoung Joe·2023년 11월 4일
0

Flutter

목록 보기
1/7

응당 튜토리얼을 따른다면 설치 환경부터 설치 프로그램들의 사양을 모두 맞춰놓는 것이 좋겠지만,

지난 번에 분명히 이 책을 보고 플러터를 깔고 실행했던 것 같은데 안드로이드 스튜디오 입장부터 예상한 화면이 나오지 않아 당황을 했다.

나는 [Create New Project] 가 없고 [New Project] 항목이 있었으며, 선택시 [Flutter App]을 선택할 수 있는 창이 없고 바로 기본 장착 사양을 물어보는 화면이 나왔으며, 플러터 선택지가 없었다.

(망...)


나... Visual Studio에서 플러터 한건가?

실제로 Visual Studio 입장시 Flutter Extension이 미리 다운로드 되어있었다.


아찾았다...

윈도우 기준 Ctrl + Shift + P를 누르고 Flutter라고 치면 바로 플러터로 새로운 프로젝트를 만드는 창이 뜬다.

Flutter SDK가 필요하다고 documentation에서 말해줬는데 Flutter SDK라고 구글에서 쳤을 때 아카이브 된 SDK에 대한 페이지만 떠서 요즘 Flutter에서는 필요 없나? 싶었지만, Create New Project를 선택하자 자동으로 VS Code에서 SDK 설치하라고 알림이 떴다. 알림에 첨부된 SDK 설치 버튼으로 설치를 마쳤다.

(번외... flutter폴더 받으면 내부에 .git이 있는데 (당근... 깃으로 배포된 sdk이므로...) 내가 그걸 보고 전에 만든 프로젝트 이름 개떡같이 지어놓은 거라 착각하고 폴더명에 날짜 붙여놔서 Flutter sdk가 있었으나 컴퓨터가 인식을 못한 것으로 나타남...)

공부 시작!


데이터타입

익숙한듯 익숙하지 않은 다트 데이터타입에는 총 일곱가지가 있다.

숫자 - int, double, num(정수형 또는 실수형)
문자 - String
불리언 - bool
자료형 추론 - var(한 번 입력 후 변경 불가능), dynamic (한 번 입력 후 변경 가능)

동기/비동기


3 원칙

  1. 언제 끝날 지 모르는 작업이 포함된 함수를 정의 할 때 {괄호 앞에 async 붙이기
  2. 언제 끝날 지 모르는 작업이 포함된 함수를 정의할 때 Future 클래스로 반환자료형 지정하기
  3. 실제로 언제 끝날 지 모르는 작업 (함수 등)을 호출하는 부위에 호출문 직전에 await 붙이기
void main() {
	check();
}

Future check() async {
	var result = await lookup();
}

int lookup() {
	return 12;
}

즉슨 await 들어가는 함수는 다 async 붙여주고
await 된 결과를 return 하는 함수는 반환자료형도 다 Future로 바꿔주면 됨!


비동기로 받은 값을 가지고 연산을 할 거라면

then()을 활용해야 함

void main() {
	await check().ten( (value) => {
    	print(value)
        });
    print('end process');
}

의문

  • {} 안에 있는 것들은 세미콜론이 필요 없나?

간단한 코드는 dartpad.dev/?를 이용하라고 한다.

상관 없나 보오!

그나저나 발견한 에러

앱 실행되는 거 확인해보자고 flutter run을 터미널에 쳐봤더니 문제가 있다는데...

내가 가진 친구는 8.2.1인 것을 확인했고 (gradle -v 를 터미널에 치자!)

프로젝트는 7.5로 세팅되어있는 것을 확인했다.

gradle 사이트를 찾아가보니 내가 가진 java 20은 8.3은 되어야 하는 상황
Upgrading gradle이라는 좌측 메뉴 페이지에서

gradle wrapper --gradle-version 8.4

쳐보라고 해서 해봤으나 결과는 fail. Flutter를 위해서는 다른 방법이 필요한 것 같다.

Android Studio에서 폴더를 열면 자동으로 제안을 해준다길래 가봤는데...

제안해준 gradle update 문구 같은 건 없고 여기서도 에러가 나더라.

부분 해결!

jdk는 확실히 다운그레이드 해야하는 것 같고
또 내 flutter가 제대로 된 Android Studio 경로를 갖고 있지 못한 것이 문제의 일부인 것 같았다.

  1. 자바 버전 바꾸기
    https://www.oracle.com/java/technologies/downloads/#java17 에서 jdk 17을 다운 받아서 압축을 원래 Java 폴더에 넣어주고 (나란히 jdk 17 폴더와 jdk 20폴더가 있는 상황)
    시스템 환경 변수에서 JAVA HOME을 17으로 바꾸어주었다.

  2. 플러터 Android Studio 경로 바꾸기

flutter config --android-studio-dir "폴더 위치" 

cmdline-tools missing 에러

Android Studio > Settings > Appearance/Behavior > System Settings > Android SDK > SDK Tools > 커맨드라인 관련된 것 항목 하나 있는데 그것 활성화

이렇게 해결했는데... 다음 과제가 또 주어졌다.

최종 해결

꼬리에 꼬리를 물길래 그냥 Java와 gradle, android studio까지 싹 다 지우고 (물론 android studio는 제대로 지운게 아니었다. 그래서 사실상 Java랑 gradle만 건드렸다고 봐도 좋을듯) 다시 깔았다. Java는 17으로 깔았고 gradle은 원래대로 최신 버전인 8.2를 썼는데 아무 이상 없이 vs code에서 flutter run을 할 수 있었다.

앞으로는... 제대로 된 공부 후기가 되기를...

profile
SW Engineer

0개의 댓글