【问题标题】:Is it ok to nest ConsumerWidgets in riverpods?可以将 ConsumerWidgets 嵌套在 Riverpods 中吗?
【发布时间】:2021-05-10 17:52:49
【问题描述】:

在 Riverpods 中,可以嵌套 ConsumerWidgets 吗?像这样的东西?我想这样做是为了让我的 api 分开,但感觉可能会降低性能?

class Foo1 extends ConsumerWidget {
  @override
  Widget build(BuildContext context, ScopedReader watch) {
    // watch something
    return Container(
      child: Foo2(),
    );
  }
}

class Foo2 extends ConsumerWidget {
  @override
    // watch something
  Widget build(BuildContext context, ScopedReader watch) {
    return Container();
  }
}

【问题讨论】:

  • 您是否在每个ConsumerWidget 中收听同一个提供商?
  • 不,不同的。例如,详细信息可能针对 Foo1,而 cmets 针对 Foo2。但作为替补,我在想。我可以将详细信息和 cmets 的数据放入 1 个提供者中,但感觉不那么干净。 @7mada 你有什么想法吗?
  • 那很好,如果你想使用 1 个提供者,你可以将它与作用域提供者一起使用来过滤重建。

标签: flutter riverpod


【解决方案1】:

这完全没问题。如果您的应用程序中的大多数或所有小部件都是 ConsumerWidget,这并不奇怪。

只要您只在需要的时间/地点关注供应商,您就无需担心。

有很多方法可以优化重建。例如,创建仅公开您的小部件状态的一个方面的提供程序可能依赖或使用Consumer 仅在提供程序公开的值更改时重建某些子项。如果你使用hooks,你可以使用select,这对于有条件的重建非常方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多