Flutter中的Key

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((){});  
       

                          ```

你可能感兴趣的:(Flutter中的Key)