본문 바로가기

프레임워크43

[개념] 변수 앞에 붙는 underbar 현재 이 파일 내에서만 사용할 수 있다는 즉, private 변수라는 의미이다. 그러나 딱히 dart에서는 관련 기능을 지원하는 건 아니고 그냥 관례적으로 쓰이는 의미다. 2023. 10. 6.
[공부] Shared preference 사용하기 1. Shared preference란? RPG 모바일 게임을 하나 만들었다고 생각해 보자. 게임이란 게 워낙 무겁다 보니 사용자들은 실제로 게임을 할 때만 앱을 켰다가 게임이 끝나면 앱을 종료한다. 그런데, 게임을 끌 때마다 오늘 내가 했던 플레이 기록들이 날아간다면? 게임 다시 켤 때마다 튜토리얼부터 다시 시작해야 될 텐데, 이거 뭐 열받아서 플레이 할수나 있을까? 꼭 게임이 아니더라도 대부분의 경우엔 앱이 꺼져도 이전 기록을 저장할 수 있도록 Database 즉, 데이터 저장소가 필요하다. Shared preference도 일종의 데이터 저장소인데, 로그인 정보라던지, 알림 수신 동의 여부 같은 비교적 간단한 정보를 주로 담는 데이터 저장소라고 이해할 수 있으며 아래와 같은 특징이 있다. Appli.. 2023. 10. 6.
[Error] No Directionality widget found. 코드상으로는 에러가 더이상 없어서 돌려봤더니 이런 시뻘건 화면이 떴다. 왜 그런가 하니 저기에서 말하는 Directionality란 텍스트 정렬 방향을 의미한다. 오른쪽 정렬이냐, 왼쪽 정렬이냐 이걸 말하는 건데 문제는 플러터는 기본적으로 텍스트의 방향을 모르기 때문에 Directionality를 따로 지정해 주던지, 아니면 Directionality를 자동으로 지정해주는 Widget을 사용해야 한다. Directionality를 따로 지정해주는 방법은 여기에 나와있다. https://flutteragency.com/no-directionality-widget-found-in-flutter/ Solving No Directionality Widget Found In Flutter | Flutter Age.. 2023. 10. 3.
[Error] error entrypoint doesn't contain a main function flutter void main() async { runApp(const 내가만든클래스이름()); } run button을 누르니까 뜬 에러인데 이 코드가 main.dart에 없어서 그랬다. 2023. 10. 3.
[공부] setState initState setState "데이터가 변경되었음"을 프레임워크에 알리는 데 사용되며 build context의 위젯을 다시 빌드하게 한다. initState 위젯이 생성될 때 처음으로 호출되는 메서드이며 오직 딱 한 번만 호출된다. 즉, statefulWidget의 상태를 처음으로 초기화할 때는 initState가 사용되고, 초기화한 상태의 변경이 감지되었을 경우에는 setState가 사용된다. initState는 딱 한 번만 호출되며, setState는 상태가 변경될 때마다 여러 번 호출된다. https://jaceshim.github.io/2019/01/28/flutter-study-stateful-widget-lifecycle/ Stateful Widget Lifecycle(생명주기) 본 문서는 Fluter .. 2023. 10. 3.
[Error] throw PlatformException(code: errorCode, message: errorMessage as String?, details: errorDetails, stacktrace: errorStacktrace); image_picker에서 이미지를 선택하고 나면, image_cropper가 실행되도록 로직을 짜 놓았는데 이미지를 선택하고 나면 이 창이 뜨면서, 652줄에서 커서가 깜빡거린다. 그래서 찾아봤더니 debug.keystore 키값이 firebase에 연결되어 있지 않을 때 발생하는 문제라고 한다. 아래의 명령어를 터미널에 입력하면 된다고 하는데, keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore 이번엔 또 이런 에러가 뜬다(햐..) The operation couldn’t be completed. Unable to locate a Java Runtime. Please visit http://www.java.com fo.. 2023. 9. 29.
private and public dart는 기본이 public이고 언더스코어를 붙이면 private입니다. public = 모든 파일에서 접근이 가능합니다. private = 해당 파일만 접근이 가능합니다.(해당 클래스 X) _를 앞에 붙이면 private 접근 지정자로 사용됩니다. https://velog.io/@ruinak_4127/Dart-%EC%A0%91%EA%B7%BC%EC%A7%80%EC%A0%95%EC%9E%90%EC%99%80-getter-setter 2023. 9. 28.
[Error] null check operator used on a null value 초기화되지 않은 nullable 변수에 ! 표시가 붙어있을 경우 발생하는 오류라고 한다. 자료형 뒤에 "?"가 붙으면 "NULL이 들어갈 수도..? 아닐 수도 있고..?" 이런 의미이고, 변수 뒤에 "!"가 붙으면 "여기!!!! 안에!!!! NULL은!!!!! 절대로 들어있지 않다!!!!!!!" 이런 의미이다. 아래 코드를 보면 string이라는 변수는 자료형 앞에 물음표가 붙어있으므로 NULL이 들어갈 수도 있고 들어갈 수도 없는 상태이다. 그런데, 초기화되지도 않았는데 변수를 사용할 때 안에 NULL이 없다고 섣불리 단정짓고 있기 때문에 이런 코드는 에러가 발생한다. 다만, 나의 경우에는 빌드는 되는데 프로그램을 실행할 때 에러가 발생했다. String? string; // Nullable Strin.. 2023. 9. 28.
[Error] 난장판 멀쩡히 클래스 안에 선언되어 있는 변수도 사용 못한다 그러고 setState도 사용이 안 된다 그러고 아주 그냥 총체적 난국이 따로 없었는데 알고 보니, 대괄호 하나를 잘못 써서 그런 거였다 어휴 2023. 9. 28.
[Error] Set the 'program' value in your launch config (eg 'lib/main.dart') then launch again cofiguration에 "program : lib/main.dart" 이런 거 추가하면서 난리를 쳤는데 그냥 launch.json 파일 새로 만드니까 해결됨 2023. 9. 27.