如何在 flutter Provider 中为单个小部件使用多个消费者

How to use multiple Consumers for a single widget in flutter Provider

我无法将 多个消费者 用于具有提供者的单个小部件?假设我的小部件是 CurvedNavigationBar 并且我在该小部件中有 4 个项目。我还有 4 个不同的 class 扩展 ChangeNotifier 并且 负责 CurvedNavigationBar 中的每个项目。

如何在单个小部件中收听这 4 个更改通知程序?我查看了文档,找不到这样的例子。这有可能吗?我发现 Consumer 有一个 builder 方法,所以这意味着你可以构建一个 widget 只 once/and 听一次。

我是否应该有一个 class 来扩展 ChangeNotifier 然后更新该小部件中的值并仅使用一个消费者来侦听更新的值?

还有一些其他 Consumer 小部件。 Consumer2Consumer3Consumer4 直到 Consumer6。如果你想听 4 ChangeNotifier 你可以使用 Consumer4

Consumer4(
  builder: (context, changeNotifier1, changeNotifier2, changeNotifier3, changeNotifier4, child) {
    // your widget
  }
)

是的,您最多可以添加 6 个消费者,如下所示

    Consumer2<AuthProvider, StorageProvider>(
    builder: (context, authProvider, storageProvider, child) {

    }
    )

还有另一种访问您的提供商的方法:Provider.of<SomeProvider>(context):

Widget build(BuildContext context) {
  final authProvider = Provider.of<AuthProvider>(context);
  final apiProvider = Provider.of<ApiProvider>(context);
  final storageProvider = Provider.of<StorageProvider>(context);

  // Do your usual stuff without wrapping it into Consumer,
  // just pass providers directly to your targets.
  return MyAwesomeWidget(
    authProvider,
    apiProvider,
    storageProvider,
  );
}