깔끔하고 효율적으로 구현하는 방법은 몇 가지 패턴과 Flutter의 생명주기를 활용하는 것입니다. 아래에 일반적인 접근법과 추천 방식을 설명할게요.1. initState에서 초기화 처리하기Flutter의 StatefulWidget에서 initState 메서드는 위젯이 처음 생성될 때 한 번만 호출되므로, 초기 데이터를 로딩하는 데 적합합니다. 예를 들어, 로컬 DB나 네트워크에서 데이터를 가져오는 비동기 작업을 여기서 시작할 수 있습니다.class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State { Str..
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..

동영상을 asset 에 넣고 app bundle을 생성하니 700M 가 넘어서 deferred compoenet 를 적용하려고 여러 자료를 보면서 적용해보았으나 key 와 관련하여 문제가 발생하여 다시 roll back 하기전 내가 작업했던 부분 정리하려함. 그전에, key와 관련하여 알아보다가 여기 글에서본 명령을 입력해보니, ./gradlew signingReport deferred compoent 로 설정한 모듈에 대한 정보가 없었다. 이걸 채워주지 않아서 안된가건가 싶기도 하다. 아무튼, 롤백하기전 수정한 것들을 하나씩 정리해보자. pubspec.yalm 파일에 assets/video 삭제하고, 아래와 같이 deferred-components 에 새로운 모듈 이름과 추가할 에셋 directory ..

만들고 있는 앱에 새로운 기능이 필요하다. 사진을 찍는 기능과 동영상을 찍는 기능이다. 구글에서 검색해보니 카메라를 사용할 수 있게 해주는 플러그인은 Flutter 에서 만들어준 것 하나 밖에 없는 듯하다. https://pub.dev/packages/camera camera | Flutter Package A Flutter plugin for controlling the camera. Supports previewing the camera feed, capturing images and video, and streaming image buffers to Dart. pub.dev 고민할 대안이 없으니 바로 사용을 해보았다. 패키지에 설명된 사용방법으로는 빠르게 실험해보기에 부족해서 구글링을 해보았다. 그..
Flutter 에서 코딩을 하다보면, 로컬에 파일이나 이미지를 저장할 때 사용할 경로를 받아오기 위해 path_provider 를 사용한다. path_provider 에서 주로 쓰는 2개의 method가 있다. getApplicationSupportDirectory getApplicationDocumnetsDirecoty 안드로이드에서 getApplicationDocumnetsDirecoty 를 통해 받아오는 경로는 /data/user/0/{app_id}/app_flutter/ 와 같은 형태이며 사용자 또는 다른 앱에서 접근이 불가능한 디렉토리다. (안드로이드 스튜디오에서 Device File Explorer로 확인 가능) 그래서 Hive 나 GetStorage 와 같은 패키지를 사용할때 이들 패키지에서..
DateTime extention 으로 사용 DateTime.weekday DateTime.monday = 1 DateTime.tuesday = 2 DateTime.wednesday = 3 DateTime.thursday = 4 DateTime.friday = 5 DateTime.saturday= 6 DateTime.sunday = 7 한주의 시작이 월요일 이라면 extension DateTimeExtension on DateTime { int get weekOfMonth { var date = this; final firstDayOfTheMonth = DateTime(date.year, date.month, 1); int sum = firstDayOfTheMonth.weekday - 1 + date.d..

Getx 그 중에서도 Obs, Obx 사용법에 대해서 정리 참고자료: Getx의 statemanagement 에 대한 문서 https://github.com/jonataslaw/getx/blob/master/documentation/en_US/state_management.md GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies eas Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Ge..

CustomPaint CustomPaint는 canvas를 제공하는 위젯이다. painter, child, foregroundPainter가 다 그림을 그리는 property인데 왜 나뉘어져 있는지 모르겠다. 순서대로 painter, child, foregroundPainter를 stack 처럼 쌓아올리며 그린다. 즉, 나중에 그려지는 위젯이 위에 위치한다 CustomPaint에서 제공하는 size의 크기는 크게 3부분의 값으로 부터 영향을 받는다 CustomPoaint 위젯의 크기는 기본적으로 부모 > 자식(child) > size (CustomPaint의 속성) 순으로 우선순위를 둔다. 부모가 크기를 가장 우선적으로 적용하며, 부모에 명시된 크기가 없을 경우 CustomPaint의 자식의 크기를 적용..
- Total
- Today
- Yesterday
- firebase
- plugin
- 한빛미디어
- UX
- 앱개발
- Syncfusion
- 앱
- 크롬
- 이미지
- 플러터
- 다트
- hide
- 인사이트
- 앱 프로그래밍
- 에러
- IOS
- SizedBox
- 디자인
- error
- 문제 해결
- BLE
- Chrome
- Bluetooth
- addPostFrameCallback
- UI
- position
- TextFormField
- TextField
- DART
- Flutter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |