분류 전체보기127 [공부] 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. 기록의 중요성 에러 핸들링을 하거나 디버깅을 할 때 내 치명적인 단점 중 하나는 생각하는 도중에 길을 잃어버린다는 것이다. 예를 들어 git push를 해야 되는데 에러가 났다. 그러면 이 에러를 찾아야 되는데 한참 찾다가 갑자기 아 맞다 image_cropper 기능도 디버깅해야 되는데 그러면 그거 디버깅하다가 잘 안되면 다시 git 관련 에러 찾다가 결국 아무것도 안 되고 시간은 지나가 있고 스트레스는 스트레스대로 고스란히 다 받고 앉아 있다. 에러라는 게 구글링 한 번에 해결되는 에러도 있지만 구글링한 대로 조치하면 또 다른 에러가 튀어나오고 그거 잡으면 또 저거 잡아야 되고 이런 경우도 심심치 않다. 그렇게 에러가 꼬리에 꼬리를 물 경우 길을 잃어버리는 경우가 잦다. 그럴 때마다 머릿속이 너무 혼란스러워서 아무.. 2023. 10. 1. 기능 하나 구현하는 데 2주를 날리고 알게 된 것 image_cropper 기능 하나 구현하는 데 2주를 날리고 오늘에서야 겨우 해결했다. 그러고 나서 지난 시간을 돌아보니 정리할 만한 것들이 있는 것 같다. 일단, 나는 프로그래밍에 처음 입문을 할 때 기본서 하나를 전부 마스터한다는 생각으로 공부했다. 그런데 그렇게 공부를 해 보니 실전에서 써먹지를 못하는 경우가 많이 발생을 했다. 약간, 뭐라고 해야 될까. 수영을 몸보다는 책 위주로 배운 느낌? 그래서 이번 프로젝트 개발 때에는 정말 최소한으로 알아야 할 것들만 빠르게 샥샥샥 정리하고 바로 기능 개발에 들어갔는데 치명적인 실수가 있었다. chatGPT에 지나치게 의존을 해버렸다는 점이다. 애초에 토이프로젝트 정도로 가볍게 생각하고 빠르게 끝낼 생각이기도 했고, 코드를 처음부터 끝까지 내 손으로 짜야.. 2023. 10. 1. image_cropper 기능 실행 시 갑작스러운 화면 꺼짐 현상 emulating해보면 아래와 같은 증상이 계속 발생한다. 그러면, 디버깅 콘솔에는 항상 이렇게 나온다. 여기에 나온 대로 따라해봤지만 실패.. 혹시 몰라 visual studio와 Emulator 모두 종료 후 재시도해도 똑같은 현상 계속됨 https://stackoverflow.com/questions/77206299/unexpected-app-close-when-emulating-my-code-in-android-studioflutter-dart unexpected app close when emulating my code in android studio(flutter, dart) I am developing using the Flutter framework and Dart language with.. 2023. 9. 30. [Error] 리모트에 로컬에 없는 사항이 들어 있으므로 업데이트가 거부되었습니다. git push에 실패하고 이런 Error가 떴다. 리모트에 로컬에 없는 사항이 들어 있으므로 업데이트가 거부되었습니다. 이 상황은 보통 또 다른 저장소에서 같은 저장소로 푸시할 때 발생합니다. 푸시하기 전에 ('git pull ...' 등 명령으로) 리모트 변경 사항을 먼저 포함해야 합니다. 그러니까 git pull을 해서 리모트 저장소의 내용을 로컬 저장소와 일치시켜야 한다는 거잖아? 오케이. 다시 에러 발생. 인터넷 찾아보니 git pull --rebase 이 명령어를 치면 해결된다고 한다. 뭐가 됐다고 하는 건진 잘 모르겠는데 어쨌든 뭐가 되긴 됐다. 해결 완료 아울러, 아래의 두 명령어 중 하나를 이용해서 fast-forward only option을 꺼두면 같은 에러가 발생하지 않는다고 한다... 2023. 9. 30. [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. 이전 1 ··· 6 7 8 9 10 11 12 13 다음