MultiProvider组件
在最顶层组件使用,可以创建多个顶层共享数据.
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(providers:
[
ChangeNotifierProvider(builder: (_) => Counter()),
],
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
),
);
}
}
更改共享数据
点击按钮等方法里,调用Provider.of<Counter>(context).increment();
Counter
是数据模型名.increment()
是模型里定义的方法.
使用共享数据
直接在组件使用: Text("${Provider.of<Counter>(context).count}")
例子用到的数据模型如下:
class Counter with ChangeNotifier{
//存储数据
int _count = 0;
//提供外部能够访问的数据
int get count => _count;
//提供更改数据的方法
void increment(){
_count++;
//通知所有听众进行刷新
notifyListeners();
}
}