簡體   English   中英

Flutter:如何獲取數據和管理應用程序狀態

[英]Flutter : how to fetch data and manage app state

我正在嘗試 Flutter,我需要(我想我需要)一個應用程序狀態管理來跨小部件共享數據,並且每次調用路由時都不必發出 http 請求。

我有地點和事件,所以我首先加載我的地​​點以在創建應用程序狀態時列出它們:

 void main() { runApp( ChangeNotifierProvider( create: (context) => AppStateModel()..fetchPlaces(), ... ) ); }

當我點擊一個地點時,我會進入地點/ID 屏幕,並且由於地點還沒有事件道具,我正在嘗試加載它們:

 class PlacePageArguments { final String id; PlacePageArguments(this.id); } class PlacePage extends StatefulWidget { const PlacePage({Key? key}) : super(key: key); @override State<PlacePage> createState() => _PlacePageState(); } class _PlacePageState extends State<PlacePage> { String id = ''; @override Widget build(BuildContext context) { final args = ModalRoute.of(context)!.settings.arguments as PlacePageArguments; return Consumer<AppStateModel>(builder: (context, appState, child) { id = args.id; appState.fetchEvents(id); final place = appState.getPlaceById(id); return Scaffold(...); }) } }

但可以肯定的是,當我 notifyChange 更新小部件時,它會對獲取事件進行無限循環。

我應該怎么辦 ? 什么是最好的實現方式,也許一個簡單的 futurBuilder 可以工作,但我想添加事件並保持在同一頁面上(使用模態添加事件)並想要即時結果。

謝謝大家

您有兩個選項可以為此引入數據,並且它們都不需要 ChangeNotifierProvider。

  1. 您可以通過構造函數傳遞數據。 這適用於小部件樹,但很容易變得復雜。

  2. 您可以使用提供程序。 提供程序允許您在一個文件中的一個類中管理數據和函數。 更多優惠請看這里

暫無
暫無

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

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