一种选择(不推荐)是嵌套 2 个 Provider:
ChangeNotifierProvider<Reader>(
create: (_) => Reader(),
child: ChangeNotifierProvider<SomethingElse>(
create: (_) => SomethingElse(),
child: ChangeNotifierProvider<AnotherThing>(
create: (_) => AnotherThing(),
child: someWidget,
),
),
),
不建议这样做,因为正如文档所述:
当在大型应用程序中注入许多值时,Provider 会很快变得非常嵌套:
但是,另一个建议是提供程序包本身 https://pub.dev/packages/provider是使用多提供商 https://pub.dev/documentation/provider/latest/provider/MultiProvider-class.html:
MultiProvider(
providers: [
ChangeNotifierProvider<Reader>(create: (_) => Reader()),
ChangeNotifierProvider<SomethingElse>(create: (_) => SomethingElse()),
ChangeNotifierProvider<AnotherThing>(create: (_) => AnotherThing()),
],
child: _HomeBody(),
)
两种方法的工作原理相同,但第二种方法更具可读性。正如文档中所说:
这两个示例的行为完全相同。 MultiProvider 仅更改代码的外观。
示例改编自提供者 flutter 包页面 https://pub.dev/packages/provider并根据您的情况进行调整。