본문 바로가기

재개발

Provider 사용

상태관리,

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