在了解之前要先從Widget的部分來講,在 Flutter 中,widget 有兩種類型:StatelessWidget 和 StatefulWidget。
所以為了更新 widget tree。所以為了讓 widget tree 可以感知到 StatefulWidget 的狀態改變,需要使用 state 物件來監聽、儲存這些狀態改變。一旦有改變State對象會通知Flutter框架重新繪製小部件,以便顯示新的狀態。
State 是 StatefulWidget 中的一部分,也是一個存儲 widget 狀態的對象,只要widget狀態改變時,State 會更新並通知 Flutter 重新繪製該 widget。
只要使用到State的任何改動都會強制Widget進行重新建構
簡單原理
將新的狀態存儲到內部變數中,然後重新呼叫 build() 方法來構建畫面。
setState() 他的好處是他是把最新狀態直接儲存在內存中,而不是直接進行更新畫面。
以上提到的東西皆是狀態管理的一環,除了setState()之外也還有其他官方推薦的狀態管理方法
setState() 這種方法適用於小型應用,但對於大型應用,由於它無法有效地管理狀態,因此可能會導致代碼混亂和難以維護的問題。
InheritedWidget
Provider
https://juejin.cn/post/6844903784187953165
https://book.flutterchina.club/chapter2/flutter_widget_intro.html#_2-2-3-flutter中的四棵树