在小部件外部访问 Riverpod 1 方法 类
Access Riverpod 1 methods outside widget classes
如何从非小部件 类 访问 Riverpod ref,在 Riverpod 1 之前,我们可以使用 context.read,在那里我们可以访问全局导航上下文。我们怎样才能在 Riverpod 1 中实现类似的东西?
我已经尝试使用 ProviderContainer 并且它正在工作,但需要使用 UncontrolledProviderScope 包装 MaterialApp 才能访问容器,这反过来会阻止记录 StateNotifierProviders 的更改,这在调试时非常方便。
有人可以帮忙吗?
您可能不想直接使用 ProviderContainer,除非您在测试时模拟 non-widget class 的依赖项。从小部件传递您的 non-widget class a Reader tear-off,例如
class YourObject {
YourObject(this.reader);
Reader? reader;
void someFunc() {
final dependency = reader?.call(someProvider);
}
}
// Inside a consumer widget
final myObject = YourObject(ref.watch)
如何从非小部件 类 访问 Riverpod ref,在 Riverpod 1 之前,我们可以使用 context.read,在那里我们可以访问全局导航上下文。我们怎样才能在 Riverpod 1 中实现类似的东西? 我已经尝试使用 ProviderContainer 并且它正在工作,但需要使用 UncontrolledProviderScope 包装 MaterialApp 才能访问容器,这反过来会阻止记录 StateNotifierProviders 的更改,这在调试时非常方便。 有人可以帮忙吗?
您可能不想直接使用 ProviderContainer,除非您在测试时模拟 non-widget class 的依赖项。从小部件传递您的 non-widget class a Reader tear-off,例如
class YourObject {
YourObject(this.reader);
Reader? reader;
void someFunc() {
final dependency = reader?.call(someProvider);
}
}
// Inside a consumer widget
final myObject = YourObject(ref.watch)