본문 바로가기

Flutter

(3)
[Flutter] App 라이프 사이클(생명주기) 관찰 개요 Flutter도 여타 안드로이드와 유사하게 앱 고유의 라이프 사이클이 존재한다. 예를 들어, 홈 버튼을 눌러 앱 화면이 더 이상 보이지 않을 때, 다시 앱으로 돌아와 화면이 보이기 시작할 때 등이 존재한다. 여기서의 라이프 사이클은 Stateful Widget에서의 라이프 사이클과 다르다. (Stateful Widget에서의 라이프 사이클은 대표적으로 위젯이 처음 초기화될 때와 위젯이 완전히 제거될 때가 일반적이다.) 라이프 사이클 종류 resumed: 앱이 화면에 다시 보이기 시작하는 경우, 유저의 인풋에 반응할 수 있다. inactive: 앱이 비활성화되고 유저의 인풋에 반응할 수 없다. paused: 앱이 유저에게 보이지 않고, 유저의 인풋에 반응할 수 없으며 백그라운드로 동작한다. (보통 i..
[Flutter] RxDart 사용과 PublishSubject, BehaviorSubject 개요 RxDart는 Dart를 리액티브 프로그래밍이 가능하게 하는 라이브러리이다. 이번 포스트에서는 RxDart에서 생산 주체인 Subject와 위젯의 StreamBuilder를 활용하는 방법을 간단하게 소개한다. 추가로 PublishSubject와 BehaviorSubject도 소개한다. Bloc.dart class Bloc { List mStocks = []; BehaviorSubject _subjectMyStockList; Bloc() { _subjectMyStockList = BehaviorSubject.seeded(mStocks); } get myStockObservable => _subjectMyStockList.stream; insertFromMyStock(MyStock item) { mSt..
[Flutter] isolate(compute)를 활용한 백그라운드에서 작업하기 개요 웹이나 로컬에서 대량의 데이터를 가져와 파싱하는 작업을 메인 쓰레드에서 진행할 시 UI가 버벅이거나 움직이지 않는 현상이 앱에서 종종 발생한다. 기존 안드로이드에서는 코루틴이나 RxJava를 통해 워커 쓰레드에서 이러한 작업을 처리했다. Flutter에서는 dart의 isolate을 활용한 compute 메서드를 통해 이 백그라운드에서 작업을 수행하여 화면의 버벅임이나 중단을 줄일 수 있다. 먼저 아래는 Flutter 공식 문서에서 compute를 활용하는 예시이다. 응답의 body를 파싱하여 Photo 리스트로 변환하는 작업을 진행한다. // 응답 결과를 List로 변환하는 함수. List parsePhotos(String responseBody) { final parsed = json.decod..