首页 > 解决方案 > 可以将 ConsumerWidgets 嵌套在 Riverpods 中吗?

问题描述

在 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();
  }
}

标签: flutterriverpod

解决方案


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

只要您只在需要的时候/在需要的地方观察供应商,您就没有什么可担心的。

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


推荐阅读