gpt4 book ai didi

flutter - 如何在 Flutter 中使用多个 ChangeNotifierProvider?

转载 作者:行者123 更新时间:2023-12-03 04:14:29 26 4
gpt4 key购买 nike

我最近开始使用 provider用于我的状态管理,我知道如何一次使用一个。

class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ChangeNotifierProvider<Reader>(
create: (context) => new Reader(),
child: _HomeBody(),
),
);
}
}

但是现在我有两个不同的类,我想添加它们并且能够在我的小部件树中访问。

如何添加多个 ChangeNotifierProviderFlutter ?

最佳答案

一种选择(不推荐)是嵌套 2 个提供者:

ChangeNotifierProvider<Reader>(
create: (_) => Reader(),
child: ChangeNotifierProvider<SomethingElse>(
create: (_) => SomethingElse(),
child: ChangeNotifierProvider<AnotherThing>(
create: (_) => AnotherThing(),
child: someWidget,
),
),
),
不建议这样做,因为正如文档所述:

When injecting many values in big applications, Provider can rapidly become pretty nested:


但是,来自 Provider package itself 的另一个建议是使用 MultiProvider :
MultiProvider(
providers: [
ChangeNotifierProvider<Reader>(create: (_) => Reader()),
ChangeNotifierProvider<SomethingElse>(create: (_) => SomethingElse()),
ChangeNotifierProvider<AnotherThing>(create: (_) => AnotherThing()),
],
child: _HomeBody(),
)
两种方法的工作原理相同,但第二种方法更具可读性。作为文档的话:

The behavior of both examples is strictly the same. MultiProvider only changes the appearance of the code.


示例改编自 provider flutter package page并适应您的情况。

关于flutter - 如何在 Flutter 中使用多个 ChangeNotifierProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61123003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com