kam*_*vyz 2 provider dart flutter
我最近开始使用provider我的状态管理,我知道如何一次使用一个。
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ChangeNotifierProvider<Reader>(
create: (context) => new Reader(),
child: _HomeBody(),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我有两个不同的类,我想添加它们并能够在我的小部件树中访问。
如何添加一个以上的ChangeNotifierProvider在Flutter?
一种选择(不推荐)是嵌套 2 个提供者:
ChangeNotifierProvider<Reader>(
create: (_) => Reader(),
child: ChangeNotifierProvider<SomethingElse>(
create: (_) => SomethingElse(),
child: ChangeNotifierProvider<AnotherThing>(
create: (_) => AnotherThing(),
child: someWidget,
),
),
),
Run Code Online (Sandbox Code Playgroud)
不建议这样做,因为正如文档所述:
在大型应用程序中注入许多值时,Provider 会迅速变得非常嵌套:
但是,来自Provider 包本身的另一个建议是使用MultiProvider:
MultiProvider(
providers: [
ChangeNotifierProvider<Reader>(create: (_) => Reader()),
ChangeNotifierProvider<SomethingElse>(create: (_) => SomethingElse()),
ChangeNotifierProvider<AnotherThing>(create: (_) => AnotherThing()),
],
child: _HomeBody(),
)
Run Code Online (Sandbox Code Playgroud)
两种方法的工作原理相同,但第二种方法更具可读性。作为文档的话:
两个示例的行为完全相同。MultiProvider 仅更改代码的外观。
示例改编自提供者颤振包页面并适应您的情况。
| 归档时间: |
|
| 查看次数: |
4211 次 |
| 最近记录: |