dart 如何在flutter_riverpod中访问没有ref对象的provider?

icomxhvb  于 2023-10-13  发布在  Flutter
关注(0)|答案(1)|浏览(173)

假设您试图在某个您无权访问WidgetRef对象的地方操作一个提供程序。
通常我们访问这样的提供程序,final yourProvider = ref.read('your_provider');
我们可以在没有ref对象的情况下操作提供程序状态吗?
在Getx中,我们在任何地方都可以访问控制器,

YourGetXController controller = Get.find();
controller.value = newValue;

尝试了一些解决方案,从互联网和chatGPT,但无法找出如何。如果可以用flutter_riverpod完成,请选择特灵,因为应用程序是用flutter_riverpod构建的。我需要上述情况下工作在一个特定的地方。如果我找不到解决方案,我将使用GetX来处理这个特定的场景。

aelbi1ox

aelbi1ox1#

GetX -这是一个关于如何不这样做的架构的变体。在这种情况下,如果不使用ref,就无法从外部访问提供程序状态。你所能做的就是:
1.将Ref作为参数传递给一个函数,其中inside将要求访问提供程序。(不良模式)
1.使用ProviderScope.containerOf(context)获取对当前ProviderContainer的引用,其中可以read提供程序值
1.使用一个类Notifier,其中ref可作为该类中的getter。
在任何情况下,如果你可以访问全局变量的数据,它很快就会变成一堆无法追踪的代码。

相关问题