作用:
- 标识element,当widget改变时,可以找到对应得element并改变相应状态,例如在一个列表中改变item位置、移动。
- 获取位置大小等等信息,一般用于定位某处widget。
分类
Key有两种类型,LocalKey和GlobalKey;
Localkey:
- LocalKey 直接继承至 Key,它应用于拥有相同父 Element 的小部件进行比较的情况,也就是上述作用1中,列表中对item进行移动,这时候你应该使用Localkey。
- LocalKey 又分为
| ValueKey | ObjectKey | UniqueKey | PageStorageKey |
|---|---|---|---|
| 普通类型 | 对象类型 | 随机生成唯一(注意重新build后会改变) | 一般用于页面跳转后,记录当前列表滑动位置,例如给Sliver加 |
GlobalKey
- 跨widget访问和改变widget状态,例如获取widget大小、颜色,最主要用处在于获取在屏幕上位置等等。
///获取位置
RenderBox renderBox = globalKey.currentContext.findRenderObject();获取渲染属性,大小,相对位置等等
var renderWIdget = globalKey.currentWidget;获取widget颜色之类
var boxState = _globalKey.currentState as _BoxState;查看状态数据、调用方法等等