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

Vik*_*kov 26 provider flutter flutter-provider

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

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

我是否应该拥有一个扩展 ChangeNotifier 的类,然后更新该小部件中的值并仅使用一个 Consumer 来侦听更新的值?

Sel*_*ğlu 48

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

Consumer4(
  builder: (context, changeNotifier1, changeNotifier2, changeNotifier3, changeNotifier4, child) {
    // your widget
  }
)
Run Code Online (Sandbox Code Playgroud)

  • 这样的设计是不是很奇怪呢?如果您需要 7 个或更多状态怎么办? (9认同)
  • 我对“ConsumN”的事情大笑起来,并不是因为他们解决了我的问题。 (6认同)
  • @CameronSima 说实话,我不知道为什么要这样实现。您可以在 https://github.com/rrousselGit/provider/blob/master/lib/src/consumer.dart 中查看实现 (3认同)
  • 我猜有人在编码时喝醉了。嗯,它有效。不会抱怨。 (2认同)

Isl*_*mam 23

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

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

    }
    )
Run Code Online (Sandbox Code Playgroud)