Flutter state 一些筆記 === ### 什麼是state? 在了解之前要先從**Widget**的部分來講,在 Flutter 中,**widget** 有兩種類型:**StatelessWidget** 和 **StatefulWidget**。 - StatelessWidget 是**不可變**的 widget - StatefulWidget 則是**可變**的 widget,可以動態地更改其狀態。 所以為了更新 widget tree。所以為了讓 widget tree 可以感知到 StatefulWidget 的**狀態改變**,需要使用 state 物件來**監聽、儲存**這些狀態改變。**一旦有改變State對象會通知Flutter框架重新繪製小部件,以便顯示新的狀態**。 > **State 是 StatefulWidget 中的一部分,也是一個存儲 widget 狀態的對象,只要widget狀態改變時,State 會更新並通知 Flutter 重新繪製該 widget。** > 只要使用到State的任何改動都會強制Widget進行**重新建構** ### setState() - 簡單原理 將新的狀態存儲到內部變數中,然後重新呼叫 **build() 方法**來構建畫面。 >setState() 他的好處是他是把最新狀態直接儲存在內存中,而不是直接進行更新畫面。 ### 相關狀態管理方法 以上提到的東西皆是**狀態管理**的一環,除了setState()之外也還有其他官方推薦的狀態管理方法 1. setState() 最常見的管理widget state的方法。當widget的狀態發生改變的時候,可以通過**調用**setState()告訴Flutter要**重新建構UI** >setState() 這種方法適用於小型應用,但對於大型應用,由於它無法有效地管理狀態,因此可能會導致代碼混亂和難以維護的問題。 2. InheritedWidget 4. Provider ### 相關資料 https://juejin.cn/post/6844903784187953165 https://book.flutterchina.club/chapter2/flutter_widget_intro.html#_2-2-3-flutter%E4%B8%AD%E7%9A%84%E5%9B%9B%E6%A3%B5%E6%A0%91 https://ithelp.ithome.com.tw/articles/10217200
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up