本文是对Flutter中的Key详解的补充,建议读本文前先读完Flutter中的Key详解。
在Widget类的定义当中,有定义这样一个canUpdate函数:
代码语言:javascript复制 static bool canUpdate(Widget oldWidget, Widget newWidget) {
return oldWidget.runtimeType == newWidget.runtimeType
&& oldWidget.key == newWidget.key;
}
这个函数用于判断Element树中某个位置上的Element是否可以被复用,可以看到,只有当新、旧Widget的runtimeType和key都相等的时候,该Element才会被复用。如果没有设置key,那么他们的key就都是null,此时就只需要判断新、旧Widget的runtimeType即可。
在Flutter中的Key详解中有这样一段描述:
上面