Flutter — State Management with Provider
Published in
3 min readOct 6, 2020
2019 Google I/O 大會,官方推出了 Flutter 狀態管理 Provider,取代了原本的狀態管理 Provide。Provider 是一種簡單且容易上手的狀態管理機制,非常適合Flutter入門者使用。
Provider
Provider 繼承於 InheritedWidget ,提供了單向資料流與 Dependency Injection 的機制,並且實現了更小單元(Widget)的渲染,大幅提升App整體的效能。
學習Provider,需要理解四個觀念:
- ChangeNotifier:管理商業邏輯與儲存狀態。當狀態需要更新時,透過 notifyListeners 更新渲染UI。
- ChangeNotifierProvider:提供 ChangeNotifier Instance 給 Widget,就是提供了 Dependency Injection 的機制。
- Provider.of:在 Widget 中取得 ChangeNotifier Instance。
- Consumer:監聽 ChangeNotifier 裡面自定義的狀態,如果狀態發生變化,則更新渲染UI。
Provider 狀態管理機制,提供了很多種類型的Provider,如下:
實作
- 加入Provider lib
- 建立Model
Model 繼承於 ChangeNotifier。如果要更新資料狀態,則透過 notifyListeners() 告知 Consumer 更新UI狀態。
- 實現 Dependency Injection
透過 ChangeNotifierProvider,建立Model Instance,再透過 MultiProvider 提供多個 Provider,並注入到 MyApp 頁面中。
- 更新狀態,渲染UI
透過 Provider.of 取得 Model Instance,之後就可以呼叫 Model 裡自定義的function。另外再透過 Consumer 監聽 Model 裡自定義的狀態,如果狀態發生變化,則更新渲染UI。
以上是Flutter 狀態管理 Provider 的基礎介紹:)