Flutter中的Key及其作用

開場引入
在Flutter中,Key是Widget的唯一標識,它在構(gòu)建Widget樹的過程中發(fā)揮著關(guān)鍵作用,幫助Flutter框架高效地識別,比較和復(fù)用Widget,從而提升應(yīng)用性能。
正式回答
Key的兩種主要類型
1)、GlobalKey

GlobalKey在整個生命周期中保持唯一和持久,它可以跨Widget樹的不同部分使用,甚至在Widget樹重構(gòu)后依然有效。
GlobalKey常用于訪問特定Widget的內(nèi)部狀態(tài)或方法。

2)、LocalKey

LocalKey在構(gòu)建階段被創(chuàng)建,用于在當前構(gòu)建上下文中標識Widget,當Widget樹被創(chuàng)建時,LocalKey幫助框架識別哪些Widget可以被重建, 哪些需要重新創(chuàng)建。
LocalKey的生命周期與構(gòu)建過程相關(guān)聯(lián),一旦構(gòu)建結(jié)束,LocalKey就不在有效。

Key在Flutter中的主要作用:
1)、Widget的識別與比較:

Key幫助框架識別Widget,當Widget樹發(fā)生變化時,框架會使用Key來比較舊樹和新樹,確定哪些Widget需要保留,哪些需要創(chuàng)建或銷毀。

2)、Widget的復(fù)用:

通過使用Key,F(xiàn)lutter框架可以識別出在新舊Widget樹中相同Key的Widget,從而避免不必要的重建,提高應(yīng)用性能。

3)、控制Widget的重建:

在使用如ListView或GridView等可滾動組件時,為每個item分配一個唯一的Key,可以控制哪些item需要重新構(gòu)建,從而提高性能。

4)、狀態(tài)管理與訪問:

GlobalKey可以用于跨Widget訪問狀態(tài),例如,用于獲取表單字段的值或觸發(fā)復(fù)雜Widget的方法調(diào)用。

總結(jié):

Key是Flutter框架中不可或缺的一部分,它不僅幫助提升應(yīng)用的性能,還提供了控制Widget重建和訪問內(nèi)部狀態(tài)的能力,是實現(xiàn)高效和響應(yīng)式用戶界面的關(guān)鍵。

Key類型 適用場景
ValueKey 列表項(值唯一時)
ObjectKey 復(fù)雜對象的列表
UniqueKey 強制重建(如動畫重置)
GlobalKey 跨組件訪問狀態(tài)

String 轉(zhuǎn) int
/// get int by value str.
static int? getIntByValueStr(String valueStr, {int? defValue = 0}) {
return int.tryParse(valueStr) ?? defValue;
}

/// get double by value str.
static double? getDoubleByValueStr(String valueStr, {double? defValue = 0}) {
return double.tryParse(valueStr) ?? defValue;
}

int number = 123;
String numberStr = number.toString();

算法
https://github.com/dipu-bd/algorithmic

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容