我有一个Class正在被调用Widgets,但这Class需要从另一个中提取数据 Class。基本上,我使用 Riverpod 作为依赖注入,并且不确定这是“正确的”还是我做错了。这是我所做的:
main.dart
var myClass1 = Class1();
final class1Provider = StateProvider((ref) => myClass1);
final class2Provider = StateProvider((ref) => Class2(myClass1));
Run Code Online (Sandbox Code Playgroud)
这是推荐的方式还是我应该做其他事情?
仅供参考,这确实有效;
Widget build(BuildContext context) {
displayData = (ref.watch(class2Provider.notifier).state).getData();
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 5
这是不正确的。您正在使用 Riverpod,但将其与全局变量混合在一起,这破坏了使用状态管理库的全部意义。
final class1Provider = StateProvider((ref) => Class1());
Run Code Online (Sandbox Code Playgroud)
ref.watch()在提供者体内使用方法:final class2Provider = StateProvider((ref) {
final myClass1 = ref.watch(class1Provider);
return Class2(myClass1);
});
Run Code Online (Sandbox Code Playgroud)
Widget build(BuildContext context) {
final displayData = ref.watch(class2Provider).getData();
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请仔细阅读文档https://riverpod.dev/docs/getting_started/。
| 归档时间: |
|
| 查看次数: |
2011 次 |
| 最近记录: |