dart 如何使用Riverpod为Flutter中具有独立状态的多个小部件使用单个Riverpod提供程序?

67up9zun  于 2023-04-27  发布在  Flutter
关注(0)|答案(1)|浏览(149)

我正在使用Riverpod提供程序来管理Flutter中4个容器的状态,这会将容器的状态更改为不同的颜色。但是,我将来可能需要更多的容器,并且为每个容器创建一个新的提供程序听起来不太正确。有没有一种方法可以为多个容器使用单个提供程序,同时保持它们的状态独立?
我的方法是为每个容器创建4个独立的提供程序,这当然可以,但我想在未来添加更多的容器,所以代码变得不必要的大。

6l7fqoea

6l7fqoea1#

您可以:
1.根据需要创建尽可能多的提供程序。
1.创建一个模型,它的字段数和容器数一样多,然后用一个StateProvider来管理它。然后值得看看freezed包,它将保持对象的不可变性和正确的hashCode/==
1.根据具体情况,可以通过ProviderScope(...)覆盖提供程序

final containerProvider = Provider((ref) => 1);

Widget build(context, ref) {
  return ProviderScope(
            overrides: [
              containerProvider.overrideWithValue(2),
            ],
            child: Container(...),
          ),
}

事实证明,每个容器都将被自己的值覆盖。

相关问题