假设您试图在某个您无权访问WidgetRef对象的地方操作一个提供程序。
通常我们访问这样的提供程序,final yourProvider = ref.read('your_provider');
我们可以在没有ref对象的情况下操作提供程序状态吗?
在Getx中,我们在任何地方都可以访问控制器,
YourGetXController controller = Get.find();
controller.value = newValue;
尝试了一些解决方案,从互联网和chatGPT,但无法找出如何。如果可以用flutter_riverpod完成,请选择特灵,因为应用程序是用flutter_riverpod构建的。我需要上述情况下工作在一个特定的地方。如果我找不到解决方案,我将使用GetX来处理这个特定的场景。
1条答案
按热度按时间aelbi1ox1#
GetX -这是一个关于如何不这样做的架构的变体。在这种情况下,如果不使用
ref
,就无法从外部访问提供程序状态。你所能做的就是:1.将
Ref
作为参数传递给一个函数,其中inside将要求访问提供程序。(不良模式)1.使用
ProviderScope.containerOf(context)
获取对当前ProviderContainer
的引用,其中可以read
提供程序值1.使用一个类
Notifier
,其中ref
可作为该类中的getter。在任何情况下,如果你可以访问全局变量的数据,它很快就会变成一堆无法追踪的代码。