배경 이해didUpdateWidget의 역할didUpdateWidget은 부모 위젯이 다시 빌드되면서 자식 위젯에 새로운 데이터(예: a 리스트)를 전달할 때 호출됩니다. 이 메서드는 이전 위젯(oldWidget)과 현재 위젯(widget)을 비교하여 필요한 업데이트를 처리할 수 있게 해줍니다.setState와 위젯 트리 업데이트부모 위젯에서 setState를 호출하면 상태 변수(a)가 변경되고, Flutter는 부모 위젯의 build 메서드를 다시 실행합니다. 이 과정에서 자식 위젯도 새로운 인수(변경된 a)를 받게 됩니다.문제 상황 분석당신의 코드에서:부모 위젯은 List a를 상태로 가지고 있고, setState를 통해 a의 값을 변경합니다.자식 위젯은 부모로부터 a를 인수로 받아 사용합니다.did..
깔끔하고 효율적으로 구현하는 방법은 몇 가지 패턴과 Flutter의 생명주기를 활용하는 것입니다. 아래에 일반적인 접근법과 추천 방식을 설명할게요.1. initState에서 초기화 처리하기Flutter의 StatefulWidget에서 initState 메서드는 위젯이 처음 생성될 때 한 번만 호출되므로, 초기 데이터를 로딩하는 데 적합합니다. 예를 들어, 로컬 DB나 네트워크에서 데이터를 가져오는 비동기 작업을 여기서 시작할 수 있습니다.class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State { Str..
MAC 에서 빌드를 할 때 아래와 같은 워닝이 뜬다. Warning: This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times. 빌드는 문제 없이 진행되기 때문에 무시하고 지내왔는데, 오늘따라 엄청 거슬린다. 그리서 구글링을 해보았는데, 요근래 나와 같은 문제를 해결한 블로그를 발견해서 따라 보았다. https://www.daddyhouse.net/229 Flut..
저번주에 문제 없이 잘 빌드 되었는데, 월요일 출근을하고 빌드를 하려고 하는데 안된다....출력되는 에러는 아래와 같다. FAILURE: Build failed with an exception.What went wrong: Execution failed for task ':package_info_plus:compileDebugJavaWithJavac'. error: invalid source release: 17 안드로이드 스튜디오가 오래전에 설치한 것인데, 안드로이드 스튜디오 설치때 내부에 포함된 JAVA 는 11 버전이고, 이후 window에 17버전을 추가 했었는데, 새로 다운 소스코드에는 내 컴퓨터에 JAVA 17 버전이 있는데, 이를 알려주지 않아서 안드로이드 스튜디오가 가지고 있는 JAV..
자식 위젯이 버튼인데 버튼에서 실행하는 메서드도 자식 위젯에 정의가 되어있었다. 이것을 부모 위젯의 어느 버튼을 눌렀을 때도 호출이 될 수 있도록 연결 해야 한다. 글로벌키를 이용하는 방법이 가장 간단하겠지만, 왠지 직접 전역 변수를 선언하고 싶지는 않다...좀더 세련된 방법이 없을까? 바로 떠오르지 않아 구글링을 해보니 쉽게 찾을 수 있었다. typedef 을 사용하는 방법 Parent 쪽에 함수를 연결 할 수 있는 변수 y를 정의 해주고 parent의 버튼에서 이 함수 변수를 호출 (y.call) 하도록 만들어 둔다. 그리고 parent 에서 child를 생성할때 함수를 파라미터로 받아 parent의 함수 변수 y 에 연결하는 익명함수를 전달한다. 이 익명 함수를 전달 받은 child 에서는 ..

기존에 작성한 코드에서 Riverpod 의 StateProvider 를 이용한 것이 있는데, 이 코드를 Riverpod Generator 를 활용하는 코드로 migration 하려고 보았더니 Generator 에서는 State Provider는 지원하지 않는다. 어떤 질문자가 아래와 같이 문의를 했는데, 레미의 답변은 제네레이터에서 StateProvider 같은 것을 추가할 계획은 아직 없고,사용할 State를 Class 로 선언하고 이 클래스를 이용하여 Notifier 로 프로바이더를 만들어야 한다고 한다. 간단한 예제는 아래 링크에서 참고하면된다 https://codewithandrea.com/articles/flutter-riverpod-async-notifier/#notifier-with-ri..
When are providers initialized?All Riverpod providers are lazy-loaded. (링크)The provider's state is initailized when the first listener is registeredEvery time the state changes, all listeners will be notified so they can update/rebuild themselvesBoth ref.watch() and ref.listen() can be used to register as a listener to a provider. This is in contrast with ref.read(), which only does a one-time r..
회사에서 Flutter로 개발한 앱과 근전도 장비는 블루투스(BLE)로 연결한다. 사용하는 BLE 라이브러리는 Flutter_Reactive_Ble 이다. 근전도 장비가 정전기나 베터리 고갈로 꺼질 경우 앱에서는 의도하지 않은 연결해제(Unintended disconnection)가 발생한다. iOS 의 경우 문제가 없이 잘 동작하지만, Android 에서는 문제가 있다. 다른 장비와 연결을 시도하면 연결이 되지 않고, 기존에 연결되었었던 장비하고만 연결이 가능하다. 우리 앱의 경우, 장비 끄기 버튼이 있는데 이 버튼을 누르면 블루투스 메시지로 장비를 꺼라는 명령을 보내고 이를 수신한 장비는 전원을 끄게 된다. 이러면 장비는 이미 꺼져있기 때문에 이후 실행되는 disconnect 명령을 OS에 보내도 장..
- Total
- Today
- Yesterday
- 다트
- 문제 해결
- 디자인
- 앱개발
- 이미지
- SizedBox
- 플러터
- firebase
- hide
- Chrome
- 인사이트
- addPostFrameCallback
- error
- UI
- 에러
- 크롬
- 한빛미디어
- Bluetooth
- position
- Flutter
- 앱 프로그래밍
- TextFormField
- plugin
- DART
- BLE
- TextField
- 앱
- UX
- Syncfusion
- IOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |