Flutter 개발 Story
Provider 패턴 본문
Provider란?
UI와 데이터 처리 로직 분리를 위해 사용하는 기술이다.
즉, 데이터를 담당하는 애가 다른 애들한테 데이터를 알려주는 기술이라고 생각할 수 있다.
Provider는 데이터 생산과 데이터 소비, 2가지의 구성으로 이루어진다.
(데이터를 어떻게 생산하느냐에 따라 Provider의 종류도 달라진다.)
믹스인
- dart에서 클래스를 확장하지 않고 다른 클래스의 메서드나 변수를 빌릴 수 있는 기술인다.
키워드 - with
Provider를 사용하는 순서는 아래와 같다.
1. 데이터를 생산하는 클래스를 만든다.
- ChangeNotifier를 믹스인하는 클래스
ChangeNotifier는 Provider에서 setState없이 해당 기능을 할 수 있게 해주는 클래스로 notifyListeners()를 사용하면 UI가 업데이트 된다.
2. 변경되는 값을 사용하기 위해 최상위 부모 위젯을 ChangeNotifierProvider로 감싸준다.
-ChangeNotifierProvider 사용에는 데이터 타입을 정의해줘야한다.(1에서 만든 데이터 생성 클래스)
3. 다른 클래스에서 Provider에 접근하기 위해 Provider.of<데이터 타입>()를 선언한다.
notifyListeners()를 호출해 UI를 변경하면 true, 데이터만 호출하면 false
//ex) UI변경 + 데이터 호출 - Provider.of<ListItem>(context, listen: true).setItems();
//데이터만 호출 - Provider.of<ListItem>(context, listen: false).setItems();
전체 코드
Provider.of vs Consumer
Provider.of와 Consumer 둘 다 데이터 생산 클래스에 접근하기 위해 사용된다.
차이점은 무엇일까?
Provider.of는 메서드만 실행하는 것이고,
Consumer는 State의 변경에 의해 위젯을 리빌드 할때 사용한다.
'Flutter' 카테고리의 다른 글
위젯) SingleChildScrollView (0) | 2021.05.11 |
---|---|
Flutter BLE 다루기 (0) | 2021.04.30 |
State란? (0) | 2021.04.15 |
StateManagement(InheritedWidget, Provider) (0) | 2021.04.15 |
Gradle exception 에러 (0) | 2021.04.05 |