Flutter Key个人小记

97 阅读1分钟

作用:

  1. 标识element,当widget改变时,可以找到对应得element并改变相应状态,例如在一个列表中改变item位置、移动。
  2. 获取位置大小等等信息,一般用于定位某处widget。

分类

Key有两种类型,LocalKey和GlobalKey;

image.png

Localkey:

  • LocalKey 直接继承至 Key,它应用于拥有相同父 Element 的小部件进行比较的情况,也就是上述作用1中,列表中对item进行移动,这时候你应该使用Localkey。
  • LocalKey 又分为
ValueKeyObjectKeyUniqueKeyPageStorageKey
普通类型对象类型随机生成唯一(注意重新build后会改变)一般用于页面跳转后,记录当前列表滑动位置,例如给Sliver加

GlobalKey

  • 跨widget访问和改变widget状态,例如获取widget大小、颜色,最主要用处在于获取在屏幕上位置等等。
///获取位置
RenderBox renderBox = globalKey.currentContext.findRenderObject();获取渲染属性,大小,相对位置等等

var renderWIdget = globalKey.currentWidget;获取widget颜色之类

var boxState = _globalKey.currentState as _BoxState;查看状态数据、调用方法等等