daino_saur
article thumbnail
Published 2024. 5. 15. 23:30
[Flutter] 상태관리 프로그래밍/Flutter
반응형

 

썸네일

 

상태란?

앱에서 사용되는 data들

 

상태관리란?

앱에서 사용되는 data들(상태)을 관리하는 방법

 

플러터에 State

App state

  • 앱 전반에 걸쳐 사용되는 data
  • 앱 여기저기 전반적으로 다 필요하고, 한쪽에서 app state를 변경하면 다른 쪽에서도 data 변경을 반영이 필요

 

Widget state

  • widget 내부에서만 사용되는 data
  • App state와의 차이점이라면 위젯 내부에서만 사용되니 공유할 필요가 없는 것

 

StatelessWidget vs StatefulWidget

StatelessWidget

  • 상태를 갖지 않는 위젯으로, 한 번 생성되면 변경되지 않습니다.
  • Data가 없는게 아닌, ‘변경될 data가 없다!' 로 이해
  • build 메서드를 통해 만들어질때 데이터가 주어질 수도 있으나, 이후내부의 data가 변경되지 않는다.
  • 이벤트 시 어떠한 반응을 기대하지 않는 위젯들

StatelessWidget에서 상태를 변경할 수 있는 방법

  • StatelessWidget의 상위 위젯에 Stateful위젯이 있어야하고,
  • Stateful위젯에서 StatelessWidget을 build할 때, 넣는 인자값이 바뀌고, 그리고 Stateful위젯에서setstate이 실행되면 값이 변했을 경우StatelessWidget은 re-build됩니다.

StatelessWidget DeepDive

  • State가 없다
  • 내부의 data가 바뀔 수 없다.
  • 내부의 dataimmutable하다.
  • 위젯자체가 immutable하기 때문에 내부 data들도 immutable 해야함

 

StatefulWidget

  • 변경 가능한 상태를 갖는 위젯
  • 내부에서 data가 변경될 경우, 화면을 다시 그려 변경된 위젯에 반영
  • 이벤트 시 데이터의 변화를 보여줘야하는 위젯

StatefulWidget DeepDive

  • StatefulWidget은 2개의 클래스로 구성
    • 바뀌는 부분과 바뀌지 않는 부분으로 나눰
    • 위젯의 State가 바뀌고 위젯이 업데이트될때, 위젯 모두를 날려버리면 data도 함께 날라가기 때문

 

참고자료

Start thinking declaratively

State class - widgets library - Dart API

Pragmatic State Management in Flutter (Google I/O'19)

플러터(Flutter) 조금 매운맛🌶️ 강좌 1| Stateful widget part 1

[Flutter Meetup Songdo 23"] 상태관리 올바르게 쓰기

반응형

'프로그래밍 > Flutter' 카테고리의 다른 글

[Flutter] ScrollPhysics types  (0) 2024.09.14
[Flutter] Open API JSON 파싱  (0) 2023.10.29
[Flutter] HTTP 구조  (0) 2023.10.29
[Flutter] Lambdas  (0) 2023.10.29
[Flutter] Future  (0) 2023.10.16
profile

daino_saur

@daino

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!