flutter-key

key

几乎所有的 widget 都有 key

1
2
3
4
5
abstract class Widget extends DiagnosticableTree {
/// Initializes [key] for subclasses.
const Widget({ this.key });

}

flutter 中对 Widget 做唯一判断的时候,需要传入 key,实际开发中如果有混淆 Widget 的问题,使用ValueKey可以解决大部分的问题。

Widget(Widget Tree)不是屏幕上的真实概念,实例化的对象其实是 Element Tree

flutter 将二者关联起来
1、类型: Column->ColumnElement 等等
2、key: 类型一样才需要 key(同级搜索)

key 类型

Local Key 局部键

  • ValueKey(T) equals
  • ObjectKey ==(内存指针)
  • UniqueKey 强制切换状态

Global Key 全局键

  • 无视同级策略
  • 寻找 Widget(findViewById) key.currentState/key.currentWidget/key.currentContext

flutter-key
https://blog.201912.xyz/2023/04/10/flutter-key/
作者
jin123d
发布于
2023年4月10日
许可协议