일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 플러터 #안드로이드 #플레이콘솔 #앱내리기
- Flutter #Stream
- 희망적금전환
- 청년도약계좌환승
- 도약전환
- 안드로이드 #코틀린 #코루틴 #콜백 #채널
- flutter #dart #stream
- Flutter #Stream #dart
- 도약연계
- 도약계좌전환
- 조립 후 재부팅
- 희망적금연계
- Today
- Total
목록Flutter (41)
Flutter 개발 상자
글 작성 vs 글 수정 대표적인 화면 재활용 사례입니다. 글 작성과 글 수정은 그 특성상 UI구성이 거의 같습니다. 하지만 작성 완료 후 누르는 버튼이 작성이냐 수정이냐 를 판단하기 위해서는 지금 내가 작성모드인지, 수정모드인지 판단하는 스위치 변수가 반드시 필요합니다. 하지만 GoRouter를 이용할때 Screen위젯쪽에 파라미터를 전달해주는건 의외로 좀 까다로운 부분이 있습니다. GoRouter는 웹과 같은 경로를 따르기 때문에 직전화면에서 다음화면으로 queryParameter를 통해서 무언가를 전달해줄 수 있습니다. 예를 들면 https://www.exam.com?index=1 이런식으로요. 하지만 저 위치에 update냐 write냐를 전달해주는건 좀 어색합니다. 그래서 extra를 통해서 전달..

순수UI 코드(View)와 UI상태&로직(ViewModel)의 분리 플러터는 기본적으로 stf위젯, UI안에 상태가 담겨져 있는 구조입니다. 하지만 이는 좀 불편합니다. 아무리 위젯단위로 쪼개고 또 쪼개도 분명 하나의 위젯에 여러가지 복잡한 상태와 로직들이 들어갈 수 밖에 없는 구조가 나올 수 있습니다. 우리는 이를 확실하게 구분하고 싶습니다. 하지만 Riverpod에서는 TextEditingController나 BuildContext는 UI 위젯쪽에서만 다루라고 합니다. 안드레아의 철학을 따라서 약간의 편의성을 얻자면... https://codewithandrea.com/tutorials/ 안드레아는 Riverpod을 사랑하는 플러터 블로거 및 강의 제작자입니다. 리버팟의 문서가 부족할때부터 안드레아는..

기본적으로... remove : '제거하다' 라는 의미, 복구가 가능함 delete : '삭제하다' 라는 의미, 복구가 불가능한 좀 더 강력한 제거 라고 알려져있습니다. 현실적으로는... 이것은 구글의 keep 이라는 메모앱입니다. '메모삭제' 와 '실행취소'가 동시에 공존하고 있습니다. 위에서 본 단어의 개념이 전혀 맞지 않는 모습입니다. 이처럼 실제 최근 애플리케이션에서는 '삭제' 라는 개념이 '복구' 라는 개념과 같이 쓰이는 경우가 많습니다. 아무래도 사용자 친화적인 UI 관점으로 봤을때 데이터를 삭제할때마다 일일이 삭제를 할 것인지 물어보고 영구 삭제를 시키는것보단 클릭 즉시 휴지통으로 이동되고 이를 취소할 수 있는 Undo 팝업을 띄워주는것이 사용성이 좋기 때문에 삭제와 제거의 경계가 점점 허물..

다음 코드의 결과는? void main() { late int a; late final b = a + 1; print('b = $b'); a = 1; } 위 코드의 실행 결과는 어떻게 될까? 당연하게도 에러가 발생한다. Uncaught Error: LateInitializationError: Local 'a' has not been initialized. 에러의 내용은 a 변수가 초기화 되지 않았다는 것으로 b를 초기화할때 a라는 late 변수를 넣었는데 a는 초기화가 되지 않은 상태였기 때문에 오류가 발생한다. 이와같이 late 키워드는 빌드타임에서는 정상이지만 런타임에서 갑작스런 초기화 에러가 발생할 수 있기에 사용하기가 좀 꺼려지는 면이 어느정도 있다. void main() { late int a;..

들어가기 앞서서 사실 GetX를 쓰지 말라는 이유는 그전에도 꾸준히 있어왔습니다. GetX를 입문하면서 꼭 보게되는게 GetX는 쓰레기다. 너무 무겁다. Flutter가 아니라 GetX라는 프레임웍을 공부하게된다 등등 다양한 이유로 반대파들이 많았습니다. 하지만 제가 이야기하려고 하는건 기존의 이유와 좀 다릅니다. 까가 되버린 빠 저는 GetX의 팬이였습니다. GetX만 있으면 플러터에서 귀찮은 문제들을 다 해결할 수 있었고 작업속도 또한 빨랐습니다. 하지만 제가 다른 상태관리에 눈을 돌리게 된건 의외로 상태관리가 아닌 라우트 관리쪽이였습니다. 현재 GetX 4.6.6 릴리즈 버전은 Navigator 1.0 을 기반으로 하고 있습니다. 하지만 2023년정도 부터 플러터에서 GoRouter를 중심으로 Na..

에러 분석 위 에러는 UTF-8 인코딩 형식이 아닌 파일을 UTF-8 형식으로 읽고 쓰려고 했기 때문에 발생하는 에러이다. 위의 사진에서 알 수 있듯이 플러터는 txt 파일을 읽고쓸때 매개변수를 받지 않으면 기본적으로 UTF-8 형식을 사용한다. 따라서 다른 인코딩 형식의 파일을 읽고 싶다면 encoding 매개변수에 알맞는 인코딩 형식을 넣어주어야 한다. 파일 인코딩 형식 확인 MAC 기준 아래의 명령어를 터미널에서 실행 file -I 파일경로(확장자포함) 전 분명 UTF-8로 인코딩 했는데 왜 자꾸 인코딩이 잘못되는거죠? UTF-8 인코딩 형식으로 파일을 쓸때 UTF-8 인코딩으로 처리할 수 없는 문자가 들어가게 되면 인코딩이 깨져버리게 된다. �� 웹사이트에서 위와 같은 문자를 본적이 있는가? 웹사..
에러 분석 위 에러는 Riverpod Provider들이 서로가 서로를 의존하는 순환 참조 에러이다. 순환 참조에 대한 ChatGPT의 설명은 다음과 같다. 순환 참조(circular reference)는 두 개 이상의 객체나 모듈이 서로를 참조하는 상황을 나타냅니다. 이는 무한 루프와 같은 문제를 일으킬 수 있으며 메모리 누수와 같은 예기치 못한 동작을 초래할 수 있습니다. 프로그래밍에서 순환 참조는 주로 다음과 같은 상황에서 발생할 수 있습니다: 객체 간의 순환 참조: 클래스나 객체 A가 다른 클래스나 객체 B를 참조하고, 동시에 B도 A를 참조하는 경우입니다. 이런 상황에서 A를 가리키는 참조 카운트와 B를 가리키는 참조 카운트가 0이 되지 않아 메모리가 해제되지 않을 수 있습니다. 모듈 간의 순환..
Map을 통한 Stream의 기초적인 변형 개요 스트림의 변형은 스트림을 사용하다보면 반드시 한번은 겪게되는 문제중 하나이다. 또한 본인이 스트림을 쓰는것을 극도로 꺼려해서 프로젝트에 스트림을 전혀 안쓰더라도 사용하는 라이브러리에서 Stream을 통해서 값을 전달해줄 경우 결국 울면서 스트림을 사용할 수 밖에 없는데 이를 커스텀하기 위해서는 Stream의 변형이 필수적이다. Bluetooth 라이브러리 사실 내가 스트림을 어쩔 수 없이 붙잡게된 이유중에 하나이다. 플러터는 공식적으로 지원하는 블루투스 라이브러리가 없다. 따라서 메서드 채널로 구현된 서드파티 라이브러리를 쓸 수 밖에 없는데, 그중에 유명한것이 https://pub.dev/packages/flutter_blue_plus https://pub..