狀態管理的多種方法
狀態管理是一個複雜的主題。 如果你覺得有些問題還沒有獲得解答, 或是這些頁面所描述的方法 不適用於你的使用情境,那你很可能是對的。
你可以從以下資源獲得更多資訊, 其中許多內容來自 Flutter 社群的貢獻。
概覽
#在選擇方法之前,建議先檢視以下內容。
- 狀態管理簡介, 這是本節的開頭 (如果你是直接來到本「方法選擇」頁面, 而錯過了前面的內容)
- Pragmatic State Management in Flutter, Google I/O 2019 的一支影片
- Flutter Architecture Samples,作者 Brian Egan
內建方法
#setState
#這是用於元件(Widget)專屬、短暫狀態的低階方法。
- 為你的 Flutter 應用程式加入互動性,Flutter 教學
- Google Flutter 的基本狀態管理,作者 Agung Surya
ValueNotifier 與 InheritedNotifier
#這種方法僅使用 Flutter 提供的 API 來更新狀態並通知 UI 變更。
- 使用 ValueNotifier 和 InheritedNotifier 進行狀態管理,作者 Tadas Petra
InheritedWidget 與 InheritedModel
#這是用於在元件樹中 祖先與子元件之間溝通的低階方法。 package:provider 以及許多其他方法的底層實作都會用到這個機制。
以下這支由講師帶領的影片工作坊,介紹如何使用 InheritedWidget:
Watch on YouTube in a new tab: "How to manage application state using inherited widgets"
其他實用文件包括:
- InheritedWidget 文件
- 使用 InheritedWidgets 管理 Flutter 應用程式狀態, 作者 Hans Muller
- Inheriting Widgets,作者 Mehmet Fidanboylu
- 有效運用 Flutter Inherited Widgets,作者 Eric Windmill
- Widget - State - Context - InheritedWidget,作者 Didier Bolelens
社群提供的套件
#根據你的應用程式複雜度以及團隊偏好, 你可能會覺得採用狀態管理套件很有幫助。 狀態管理套件通常能協助減少樣板程式碼、 提供專門的除錯工具,並有助於 建立更清晰且一致的應用程式架構。
Flutter 社群提供了各式各樣的狀態管理套件。 最適合你應用程式的選擇,通常取決於應用程式的複雜度、 團隊的偏好,以及你需要解決的具體問題。
想要開始探索可用的選項, 可以前往 pub.dev 網站上的 #state-management 主題, 並進一步篩選,找到符合你需求的套件。