Local Key 要求同一个父级的子widget中,不能重复。
感觉主要就是用在List中。
List中的各item的local key不能重复。
GlobalKey 是 有一个全局的存储,会保存所有的GlobalKey。
LocalKey没有这么复杂,感觉就是象数据库的key一样的
很单纯的一个key,用来区分同一父widget的各子widget。
就象数据库表的key就是为了区分各条数据的。
有了LocalKey,
在 Widget List 中删除、移动 item时,就不会因为
Flutter的重用机制而产生混乱了。
如果List 的 item 没有 LocalKey的话,
在父widget重建的时候,是不区分List中的各项的,
如果List中的项一些内容是保存在state中的话,没有localkey, 子widgetr的态就会乱了。
感觉有点象iOS中TableView中cell的id,是哪么个意思,但是完全不一样。
iOS中的cell的id是为了区别不同类别的cell的。
而flutter的local就是直接区分各个item的。
总结就是:
LocalKey是为了区分同一父widget下各个同一级的子widget的。
不同层级的widget的localkey是不会相互比较的。
如果作为一个List的子widget中有删除,新增,重排序等操作的话,
一定要给子widget加上loca lkey。
而LocalKey的各子类的区别实际很小,就是用什么作key的区别。
就象数据库建表时指定key列时,数据类型可以不一样。