4
哪裏應該保持最終值?保持小部件或狀態的最終字段?
在StatefulWidget
(當然我的子類)實例,然後從State
(子類)訪問它通過widget.thatFinalField
,或
在State
本身。我已經看到兩種方法了。對他們每個人都有利弊。
哪裏應該保持最終值?保持小部件或狀態的最終字段?
在StatefulWidget
(當然我的子類)實例,然後從State
(子類)訪問它通過widget.thatFinalField
,或
在State
本身。我已經看到兩種方法了。對他們每個人都有利弊。
您應該在StatefulWidget
上存儲final
成員字段(通過構造函數參數傳遞)並將其公開。
StatefulWidget
的關聯State
應該只使用默認構造函數(無參數),其成員字段應該是私有的(從_
開始)並且是可變的。如果需要昂貴或異步工作,請將它們初始化爲內聯或initState
。
這種模式允許StatefulWidget
重新創建/新構造函數的參數重建時,其父母打電話setState
,而重新使用以前State
,讓它保持存儲在其可變成員字段中的值。
最後流訂閱怎麼樣?從服務或注入器類獲得。 – DogeLion
構建你的StatefulWidget及其相關狀態應該不會有任何副作用。如果你正在做任何有副作用的工作來初始化你的小部件,你應該在initState()中做並將它保存到可變成員變量中。確保在處理完後自行清理()。 –