将 ConsumerWidget 嵌套在 Riverpod 中可以吗?

foo*_*675 3 flutter riverpod

在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();
  }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*ord 5

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

只要您只在需要的时间/地点观看提供商,您就无需担心。

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