根據此處的 Flutter 檔案(https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple),
控制狀態管理的一種方法是在其后代之一是消費者時使用 ChangeNotifierProvider(或 InheritedWidget),當底層 ChangeNotifier 更改時重建消費者。Flutter 的團隊在官方的 youtube Flutter 頻道上重申了這種方法。
但是,這意味著某些業務邏輯元素 (ChangeNotifier) 現在是 Widget 樹的一部分(否則就是 UI 的外觀)。所以我不明白為什么這些類(ChangeNotifierProvider、InheritedWidget、Consumer)甚至存在。
特別是,為什么以下方法不優越:
- 業務邏輯是一個單例和一個 ChangeNotifier。
- 而不是 Provider(...),對于每個依賴于業務邏輯的 Widget,只需執行以下操作:
BusinessLogicSingleton.instance.addListener(() {
setState(() {
});
在 initState(...) 處。
我在這里缺少什么?
uj5u.com熱心網友回復:
您確實可以這樣做,但是您還必須記住在處置時關閉偵聽器。提供者會自動處理。
uj5u.com熱心網友回復:
您打算如何在無狀態小部件中設定狀態?同樣按照您建議的方法,如果您要使用消費者,您將使用 setstate 重建整個小部件,而不是僅構建特定部分,即使是復雜的小部件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335686.html
