728x90
Dart & Flutter
28

[Flutter] FlutterError (setState() or markNeedsBuild() called during build.

아래처럼 widget이 return되기 전에 조건에 따라 실행되는 함수를 넣었다. ValueListenableBuilder( valueListenable: notifierValue, builder: (context, value, child) { if (value == 0) { func(); } return Row( ... func 함수는 다음과 같이 Navigator.push를 포함한다. void func() { ... Navigator.push( context, MaterialPageRoute( builder: (context) => HomeScreen(); ... } FlutterError (setState() or markNeedsBuild() called during build. 라는 에러가 발생..

Dart & Flutter 2023.05.12

[Flutter] This widget has been unmounted, so the State no longer has a context (and should be considered defunct).

FlutterError (This widget has been unmounted, so the State no longer has a context (and should be considered defunct). Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.) 위 에러를 만났을때의 코드를 확인해보면 다음과 같다. @override void initState() { super.initState(); Navigator.pop(context); // this code is problem Navigator.push( context, Ma..

Dart & Flutter 2023.05.10

[Flutter/Android] Google Play 출시 준비

App Sceenshot 만들기 아래 사이트에서 무료로 만들 수 있다. https://studio.app-mockup.com/ 다양한 템플릿을 제공해주어서 Load할 수 있고 다양한 Device를 선택하여 Screen에 캡쳐한 사진을 추가하면 된다. Icon 생성 아래 사이트에서 무료로 생성할 수 있지만 디테일한 customize는 안되는 것 같다. Launcher icon generator Signing the app on Mac/Linux keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload on Windows keytool -genkey -v -keystore %..

Dart & Flutter 2023.05.10

[Flutter] Repository Pattern

일반적인 repository pattern은 다음과 같이 business layer, repository layer, data source로 구성되어있다. 각각은 간단하게 다음과 같이 설명할 수 있다. business layer: 실제로 controller 또는 service로 사용됨. repository layer: 특정 api에 맞게 data를 주고받을 수 있게하는 abstract한 format이다. 다시 말해 SQLite를 사용한다면 SQLite에 맞게, MongoDB를 사용한다면 MongoDB에 맞게 만들 수 있게 만들어놓는 틀이다. 는 business layer가 직접 data에 접근할 수 없게 만들어주기도 한다. data source: RESTful API, SQLite, MongoDB와 같은..

Dart & Flutter 2023.05.04

[Flutter] fluttererror.fromparts

height를 지정해주지 않아서 생기는 문제이다. 해결방법은 sizedbox 또는 column으로 wrap해주면 된다. 아래 reference에 달아놓은 유튜브 링크를 참조하면 이해하기 쉬운데 listview 처럼 infinite size를 원하는 widget이 child에 있기 때문에 발생하는 문제이다. parent widget은 child에게 원하는 size를 물어보는데 listview와 같은 infinite size를 원하는 widget이 있을 경우 어떻게 size를 할당해줘야할지 몰라 발생한다는 것이다. 그래서 explicit하게 size를 지정해주어야한다. [reference] https://www.youtube.com/watch?v=jckqXR5CrPI https://stackoverflow...

Dart & Flutter 2023.05.02

[Flutter/Android] 'com.example' 이(가) 제한된 상태이므로 다른 패키지 이름을 사용해야 합니다.

appbundle을 업로드하면 'com.example' 이(가) 제한된 상태이므로 다른 패키지 이름을 사용해야 합니다. 라는 문장이 뜨는데 이것은 build.gradle의 applicationId와 AndroidManifest.xml의 pakage를 수정해주면 된다. 먼저 android>app>build.gradle을 열어서 다음과 같이 만들고 싶은 applicationId로 수정한다. defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.pomotimer.jade.app" // You can ..

Dart & Flutter 2023.04.22

[Flutter/Android] java.lang.RuntimeException: Unable to instantiate activity

Google play에 출시하는 과정에서 내부테스트 중 다음과 같은 오류가 발생한다. 이 문제는 MainActivity.kt 파일의 pakage name이 AndroidManifest와 build.gradle에서 정의한 name과 달라서 생기는 문제이다. 따라서 MainActivity.kt 파일을 열어서 pakage를 수정해주면 된다. 참고로 preference로 찾으면 되긴하지만 위치는 android>app>src>main>kotlin>com>example>pomotimer 에 있다. [reference] https://stackoverflow.com/questions/61046199/java-lang-runtimeexception-unable-to-instantiate-activity-in-flutter

Dart & Flutter 2023.04.22
728x90