Flutter — State Management with Provider

Dave Chao
Flutter Taipei
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 的基礎介紹:)

--

--