首先引入provider库
关上我的项目下pubspec.yaml

dependencies:    provider: ^6.0.4

装置

flutter pub get

关键点:

1、Provider外部的DelegateWidget是一个StatefulWidget所以能够更新且具备生命周期。2、状态共享是应用了 InheritedProvider 这个 InheritedWidget 实现的。3、奇妙利用 MultiProvider 和 Consumer 封装,实现了组合与刷新颗粒度管制。

Provider罕用组件:

ChangeNotifierProvider、MultiProvider、Provider、Consumer、Consumer2

以下先介绍两种我正在用的:
ChangeNotifierProvider用法
1.ChangeNotifierProvider({Key key, @required ValueBuilder<T> builder, Widget child })

ChangeNotifierProvider<UserInfo>(        create: (BuildContext context) {          return UserInfo();        },        builder:(context,child){        },        child: ProviderMainApp(),      ),

2.ChangeNotifierProvider.value({Key key, @required T notifier, Widget child })

ChangeNotifierProvider<UserInfo>.value(    value: UserInfo(),    child: const MyApp(),  )

MultiProvider用法

MultiProvider(    providers: [      ChangeNotifierProvider<UserInfo>.value(        value: UserInfo(),      ),    ],    child: const MyApp(),  );

拜访和批改数据

间接拜访数据Provider.of<UserInfo>(context, listen: false).username调用批改数据办法Provider.of<UserInfo>(context, listen: false).setname(str);