상태관리,
setState, initState등 생각없이 쓰던 상태들과, 자주 듣던 라이프 사이클 관련한 이야기인데,
플러터에서 상태를 관리하는 방법은 아래처럼 여러가지가 있다고 한다.
- Provider
- InheritedWidget & InheritedModel
- Redux
- BLoC / Rx
- GetX
그중 맨 위에 있는 프로바이더를 이용 해 보기로 했는데,
앱을 만들려고 하니 페이지별로 나누어 져 있는 코드에서 관리 할 전역변수를 관리하기 위해서 프로바이더 만한 것이 없다고 하니, 일단 한번 써 보기로.
하고싶은건, 아래의 두 스크린에서 입력받은 값을 양쪽의 페이지에 적용하고 싶은 거.
첫 페이지의 TextEdit 값을 바꾸거나, 두번째 페이지의 슬라이드를 바꾸면 계산한 결과가 다이내믹 하게 바꾸는 일.


우선 데이터를 만들어 내는 클라스를 한 개 만들고,
private변수를 초기화 시키고, getter를 만들어 준다.
getter라고 하는 용어가 등장하는데, private 변수를 public변수로 get을 해 주는 놈.
TextEdit가 바뀌면(onChanged) 값을 업데이트 해 주는 메소드를 한 개 만들어 준다.
notifyListneners()로 상태가 변경 되었을 때, 다시말해 이 함수가 호출되면 감지 해 주는 기능.

TextEdit가 바뀌면 호출하는 부분은 이렇게.
context.read로 불러버림.

이렇게 하면, TextEdit의 값이 변경 될 때 number_of_column이라는 전역변수가 바뀌게 되고,
이를 MeterialApp에서 사용을 해야 하니,
main.dart의 main함수에서,
MultiProvier를 이용.


'재개발' 카테고리의 다른 글
TabBarView (0) | 2022.12.09 |
---|---|
Life Cycle 다시 한번. (0) | 2022.12.07 |
setState() or markNeedsBuild() called during build. (0) | 2022.12.04 |
MVC, MVP, MVVM (0) | 2022.12.04 |
Checkbox, Switch, ToggleSwitch (0) | 2022.12.02 |