[Flutter] 상태관리

송상민·2022년 10월 6일
0

Flutter

목록 보기
4/13
post-thumbnail

Flutter가 상태관리 하는 법을 알아보자.
이 내용을 읽기 전에 Flutter UI의 작동방식을 숙지하고 오는 것이 이해에 도움이 될 것 같다.


선언전 UI 방식

Flutter의 상태관리를 이해하기 위해서는 Flutter의 UI 작성방법인 '선언적 UI 방식'에 대해서 이해해야 한다. 간략하게 설명하면 '선언적 UI 방식'에서는 UI 객체를 직접 생성하지 않고, UI 객체에 대한 설계도를 작성한다. 그러면 Framework가 설계도를 바탕으로 UI 객체의 생성, 관리를 전부 해준다. 즉 우리는 UI 객체에 대해 모르고 설계도만 작성하면 되는 것이다.

하지만 UI 객체 생성, 관리를 Framework가 처리해준다면 UI 변경에는 어떻게 대처해야 할까? UI 객체를 갖고있지 않으니 직접 UI객체에 접근하여 변경하는 것은 불가능하다. '선언적 UI 방식'에서는 변경이 일어날 때 해당 변경에 맞추어 새로운 UI 객체를 생성한다.

선언적 UI에 대해 자세하게 보고 싶다면 아래 링크의 글을 읽어보자
선언적 UI Flutter 공식문서


Flutter의 상태 관리란 데이터의 상태라고 생각하면 쉽다. 현재 데이터에 맞게 화면을 변경해주고 유저의 반응에 대응하기 위해 필요하다. 상태에 따라 Ephemeral(임시) StateApp State로 나뉘게 된다.

Ephemeral(임시) State

Ephemeral State(UI State, Local State)는 단일 위젯에 깔끔하게 포함할 수 있는 상태이다. 정의가 추상적이고 모호하다고 생각할 수 있는데 의도한 것이다. 이해를 돕기 위해 예를 들어보면

  • 현재 페이지에 PageView
  • 복잡한 애니메이션의 현재 진행 상황
  • 현재 선택된 BottomNavigationBar

위에 해당 되는 내용은 StatefulWidget이다. 굳이 해당 StateFulWidget외에 다른 Widget들이 알 필요가 없는 상태들이다.

App State

App State(Application State, Shared State)는 Ephemeral State 와는 다르게 앱의 여러 부분에서 공유하고 사용자 세션간에 유지되어야하는 상태이다. 이해를 돕기 위해 예를 들어보면

  • 사용자 환경설정
  • 로그인 정보
  • 전자 상거래 앱의 장바구니
  • 뉴스 앱의 Read/Unread State

Ephemeral(임시) State, App State 사용규칙

이 둘은 어떤 상황에 사용해야 한다는 규칙이 있을까? 딱히 규칙은 없다. Redux 개발자인 Dan Abramov는 다음과 같이 말했다.

덜 어색한 일을 하는 것

위의 내용들을 자세히 보고 싶은 분들은 아래 링크를 읽어보자
Flutter 공식 문서 (ephemeral state and app state)

profile
실력있는 Flutter 개발자가 되어보자

0개의 댓글