Flutter中的Key
2021-03-30 本文已影响0人
忆往不纠
Key基本概念
Key本身就是个抽象类 大致分两大类(1. LocalKey 和 2. Globalkey )
1. LocalKey 用作diff算法的核心所在!用作Element和Widget
进行比较!
- ValueKey 以一个数剧作为Key。列入数字、字符!
- ObjectKey 以Object对象作为Key!
- UniqueKey 可以保证Key的唯一性!(注意:一旦使用UniqueKey那么就不存在Element复用了,用的很少)
2. Globalkey
- 可以获取到对应的Widget的State对象!
- 利用这个GloableKey可以做到局部更新,
只更新对应需要更改的Widget小组件,节省性能
使用方式:
1. 创建Globalkey
```
final GlobalKey<_ChildPageState> _globalKey = GlobalKey();
```
2.重写构造方法
```
ChildPage({Key key}) :super(key:key);
```
3.生成Childpage对象
```
ChildPage(key:_globalKey) ;
```
4.在相应地方利用_globalKey取出相应的Widget 和State 及 Context
```
###_globalKey.currentContext
###_globalKey.currentWidget
_globalKey.currentState.setState((){});
```