Flutter StatefulWidget Key
flutter属于增量更新。每次更新界面时,都会调用build进行渲染。widget中调用canUpdate方法,对比现有控件和旧控件的 runtimeType 和 widget中的key值。如果都相同则不更新,反之更新界面。
在StatelessWidget中,因为不可变,element 的值没有报存在element中,所以update也不会改变原有界面。
在StatefulWidget中,值保存在_State。
如果没有标记key。则当更新界面时,会重新调用build 方法。此时,widget 赋值会从头开始从element树中拿取数据,放入widget树。当删除一些widget树元素时,就会出现element树中数据和widget树不一致。 此时就需要key来进行特殊标识,同步element树和widget树
参考:https://www.jianshu.com/p/45a1c158ee1d