簡體   English   中英

Flutter/Riverpod - 如何結合提供程序來獲取數據列表並將數據列表保存為 state?

[英]Flutter/Riverpod - how to combine providers for fetching data list and holding the data list as state?

我一直在玩 RiverPod 2.0 state 管理 package 來了解如何使用它進行 CRUD 類型的操作

我無法理解的是如何使用提供程序的范圍來支持..

  • 在列表視圖中顯示之前異步加載數據 object 列表,即 FutureProvider
  • 在提供程序中維護數據 object 列表以支持 CRUD 用例,即 StateNotifierProvider。

在我的 Flutter 列表視圖中,我正在從 StateNotifierProvider 而不是 FutureProvider 讀取數據。

對於這種情況,您似乎需要兩個不同的提供者。 那是對的嗎?

目前,我正在使用 FutureProvider 加載數據列表,並在此 FutureProvider 中將數據推送到 StateNotifierProvider。 這是正確的方法嗎?

新方法是使用AsyncNotifier從數據庫或服務器異步讀取數據。 您可以更詳細地閱讀有關該主題的一篇好文章:

如何使用 Notifier 和 AsyncNotifier

另一方面,舊方法是將StateNotifierAsync state 一起使用。類似這樣的事情:

final dataProvider = StateNotifierProvider<MarketNotifier, AsyncValue<YOURDATA>>((ref) {
  return DATANotifier();
});

class DATANotifier extends StateNotifier<AsyncValue<YOURDATA>> {
  MarketNotifier() : super(const AsyncValue.loading()) {
    _init();
  }

  Future<void> _init() async {
    state = await AsyncValue.guard(() => LocalStorage().getData());
  }

  // Post your CRUD methods for working with data here
}

FutureProviderStateProvider的異步版本,因為它不用作存儲和處理大型邏輯的地方。

暫無
暫無

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

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