플러터 Provider 패키지

전송 없이 모든 위젯이 state를 직접 가져다쓸 수 있게 만들어주는 패키지
Provider 패키지

사용방법

  1. state 보관하는 store 필요
class Store1 extends ChangeNotifier {
	var name = 'john kim';
}
  1. store 등록 필요
  • store를 사용할 위젯들을 전부 ChangeNotifierProvider()로 감싸면됨. 모든 위젯에 다 사용할 경우 MaterialApp을 감싸면 끝
  • create 안에는 Store1를 넣으면 되고 child에 적용할 위젯을 추가
void main() {
	runApp(
		ChangeNotifierProvider(
			create: (c) => Store1(),
			child: MaterialApp(
				theme: style.theme,
				home: MyApp()
			)
		)
	)
}
  1. store에 있는 state를 사용하고 싶을 때
  • context.watch<store명>().[사용할 state] 쓰면됨
  1. state 변경
  • Store 클래스 안에다 변경하는 함수를 만들고 context.read<store명>().[변경하는 함수명 호출] 해서 사용
  • 변경하는 함수안에 notifyListeners() 함수 추가해주면 재렌더링 진행됨

store가 여러개인경우

  • store 클래스는 따로 만들어 두고 등록하는 부분을 Multiprovider로 변경
MultiProvider(
	providers: [
		ChangeNotifierProvider(create: (c) => Store1()),
		ChangeNotifierProvider(create: (c) => Store2()),
	],
	child: MaterialApp( 어쩌구 )
)

좋은 웹페이지 즐겨찾기