可以在 riverpods 中嵌套 ConsumerWidgets 吗?

Is it ok to nest ConsumerWidgets in 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();
  }
}

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

只要您只看 when/where 需要的提供者,您就没有什么可担心的。

有很多方法可以优化重建。例如,创建仅公开小部件状态的一个方面的提供程序可能依赖于或使用 Consumer to only rebuild certain children when the value exposed by a provider changes. If you're using hooks, you can use select,这对于有条件地重建非常方便。