Key本身是一个抽象类,用作diff的核心算法比较Widget。
-ValueKey 以一个数据作为Key
-ObjectKey 以Object对象为Key
-UniqueKey 可以保证Key的唯一性(注意:一旦使用UniqueKey就不存在Element的复用了)
在widget中有一个能否复用的判断,如果key为null,则只判断类型,会导致各种问题
static bool canUpdate(Widget oldWidget, Widget newWidget) {
return oldWidget.runtimeType == newWidget.runtimeType
&& oldWidget.key == newWidget.key;
}
GlobalKey:
用来获取指定widget的State对象
网友评论