-
Flutter ChangeNotifier / MultiProvider ProviderDEV/flutter (dart) 2023. 2. 13. 16:15
시작하기 전, provider를 Pub get 해주어야 함
* pubspec.yaml 확인
// 예시 dependencies: provider: ^6.0.1
1. 선언방법
1.1. 우선 ChangeNotifier을 선언
class Store extends ChangeNotifier { var name = 'sibong'; changeName() { name = 'seokbong'; notifyListeners(); // re-rendering 해주세요. } }
1.2. 위 Store 내부의 변수 및 함수를 사용할 위젯을 ChangeNotifierProvider로 감싸줌
void main() { // MaterialApp 내의 모든 위젯에서 사용하기 위해 ChangeNotifierProvider로 감싸줌 // create는 필수값이며 매개변수로 context를 넣어주어야함(c) // create로 Store 클래스를 지정 // child에 MaterialApp을 지정 (그냥 Store를 쓸 앱을 감싸준다고 생각하면 된다) runApp( ChangeNotifierProvider( create: (c) => Store(), child: MaterialApp( theme: style.theme, home: const MyApp(), ), ) ); }
2. 사용방법
// 변수 사용방법 context.watch<Store>().name // 함수 사용방법 context.read<Store>().changeName();
* 보너스 : 여러 Provider를 사용하고 싶은 경우.
void main() { runApp( // 여러개를 등록하겠다! MultiProvider( providers: [ // Store와 subStore를 등록! ChangeNotifierProvider(create: (c) => Store()), ChangeNotifierProvider(create: (c) => subStore()), ], child: MaterialApp( theme: style.theme, home: const MyApp(), ), ) ); } ...(대충 코드) // 사용법은 동일함!
'DEV > flutter (dart)' 카테고리의 다른 글
Flutter/Flame 2D 횡 스크롤 게임 만들기 예시 2 (Flutter/Flame 2D Horizontal Scroll Game Example 2) (0) 2023.03.08 Flutter/Flame 2D 횡 스크롤 게임 만들기 예시 1 (Flutter/Flame 2D Horizontal Scroll Game Example 1) (0) 2023.03.08 Flutter 위젯 클릭(클릭, 더블클릭, 드레그 등) 시, 이벤트 발생시키는 방법 (0) 2023.02.13 Flutter TextField값 저장 및 불러오기 (0) 2023.02.13 Flutter IOS 사진/카메라/마이크 권한 (0) 2023.02.10