簡體   English   中英

Flutter Riverpod 在一個本身就是 StateProvider 的類中調用 StateProvider

[英]Flutter Riverpod call StateProvider within a class that itself is a StateProvider

我有一個由Widgets調用的Class ,但是這個Class需要從另一個Class中提取數據。 基本上,我使用 Riverpod 作為依賴注入,並且不確定這是否“正確”或者我做錯了。 這是我所做的:

main.dart

var myClass1 = Class1();
final class1Provider = StateProvider((ref) => myClass1);
final class2Provider = StateProvider((ref) => Class2(myClass1));

這是推薦的方式還是我應該做其他事情?

僅供參考,這確實有效;

Widget build(BuildContext context) {
  displayData = (ref.watch(class2Provider.notifier).state).getData();

謝謝

這是不正確的。 您正在使用riverpod,但將它與全局變量混合在一起,這會破壞使用狀態管理庫的全部意義。

  1. 您應該在 StateProvider 中創建實例:
final class1Provider = StateProvider((ref) => Class1());
  1. 為了在另一個提供者中訪問一個提供者的值,您需要在提供者的主體內使用ref.watch()方法:
final class2Provider = StateProvider((ref) {
  final myClass1 = ref.watch(class1Provider);
  return Class2(myClass1);
});
  1. 最后,要使用 StateProvider,您正在查看通知程序而不是狀態。 這將為您提供正確的初始值,但不會在狀態更改時重建您的 UI。 相反,您應該直接觀察提供者。
Widget build(BuildContext context) {
  final displayData = ref.watch(class2Provider).getData();
}

有關更多信息,請徹底閱讀文檔https://riverpod.dev/docs/getting_started/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM