Flutter中的Key及其作用

开场引入
在Flutter中,Key是Widget的唯一标识,它在构建Widget树的过程中发挥着关键作用,帮助Flutter框架高效地识别,比较和复用Widget,从而提升应用性能。
正式回答
Key的两种主要类型
1)、GlobalKey

GlobalKey在整个生命周期中保持唯一和持久,它可以跨Widget树的不同部分使用,甚至在Widget树重构后依然有效。
GlobalKey常用于访问特定Widget的内部状态或方法。

2)、LocalKey

LocalKey在构建阶段被创建,用于在当前构建上下文中标识Widget,当Widget树被创建时,LocalKey帮助框架识别哪些Widget可以被重建, 哪些需要重新创建。
LocalKey的生命周期与构建过程相关联,一旦构建结束,LocalKey就不在有效。

Key在Flutter中的主要作用:
1)、Widget的识别与比较:

Key帮助框架识别Widget,当Widget树发生变化时,框架会使用Key来比较旧树和新树,确定哪些Widget需要保留,哪些需要创建或销毁。

2)、Widget的复用:

通过使用Key,Flutter框架可以识别出在新旧Widget树中相同Key的Widget,从而避免不必要的重建,提高应用性能。

3)、控制Widget的重建:

在使用如ListView或GridView等可滚动组件时,为每个item分配一个唯一的Key,可以控制哪些item需要重新构建,从而提高性能。

4)、状态管理与访问:

GlobalKey可以用于跨Widget访问状态,例如,用于获取表单字段的值或触发复杂Widget的方法调用。

总结:

Key是Flutter框架中不可或缺的一部分,它不仅帮助提升应用的性能,还提供了控制Widget重建和访问内部状态的能力,是实现高效和响应式用户界面的关键。

Key类型 适用场景
ValueKey 列表项(值唯一时)
ObjectKey 复杂对象的列表
UniqueKey 强制重建(如动画重置)
GlobalKey 跨组件访问状态

String 转 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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容