美文网首页
Flutter widget参数Key

Flutter widget参数Key

作者: 周_0717 | 来源:发表于2022-02-24 18:59 被阅读0次

代码注释上的描述:用于控制一个widget如何替换树中的另一个widget。如果两个widget的运行时类型和参数key分别相等(==),则通过Element.update更新节点,否则从树中移除旧节点,并创建新节点添加到树中。一般来说,如果widget没有兄弟节点则不需要设置key。

Key的直接子类为LocalKey和GlobalKey;

GlobalKey要求在应用内唯一。拥有GlobalKey的widget在变动其在树中定位时(移动或移除),会对其对应的子树重新定位父节点,这一系列动作需要在同一帧内完成。在上述过程中,会对此widget的全部子孙节点执行State.deactivate操作。

LocalKey要求在兄弟节点中保证唯一,LocalKey直接子类有三个:ValueKey、ObjectKey、UniqueKey。

  1. ValueKey:支持泛型,一般使用基本数据作为唯一标识时使用;
  2. ObjectKey:以对象作为参数,一般以某一对象作为唯一标识时使用;
  3. UniqueKey:创建唯一标识,仅与本身相等;

ValueKey与ObjectKey都支持使用对象创建,但两者计算hashcode的方式不同:

ValueKey<T>:
@override
int get hashCode => hashValues(runtimeType, value);

ObjectKey:
@override
int get hashCode => hashValues(runtimeType, identityHashCode(value));

2022-02-24

相关文章

  • Flutter widget参数Key

    代码注释上的描述:用于控制一个widget如何替换树中的另一个widget。如果两个widget的运行时类型和参数...

  • Flutter 中的 Key

    前言 Flutter 中一切皆 Widget,而 Widget 的构造方法中有个可选参数 Key。一般情况下我们不...

  • 二、Flutter中Key的作用

    在Flutter中每个Widget的构造方法都提供了一个可选参数Key,这个Key有什么用呢? 1、案例 现在看一...

  • Flutter布局指南:详细理解Flutter中的Key

    Key用来干嘛 Flutter中的Key,一直都是作为一个可选参数在很多Widget中出现,那么它到底有什么用,它...

  • The Key of Widget in Flutter

    The Key of Widget in Flutter 当我们刚开始使用Flutter,我们在继承Statele...

  • Flutter Key

    什么是key Key 能够帮助开发者在 Widget tree 中保存状态。 Flutter | 深入浅出Key ...

  • flutter 中的 key

    flutter中的key是用来标识[Widget]s, [Element]s and [SemanticsNode...

  • Flutter中Widget之key原理探索

    开始 在Flutter的每个Widget中, 都会有key这个可选属性. 在刚开始学习flutter时, 基本就直...

  • Flutter学习-知识点学习

    runApp它接受一个Widget参数 在Flutter中,大多数东西都是widget(后同“组件”或“部件”),...

  • Flutter 状态

    组件可选参数Key的见解 Widget 管理自身状态 调用 效果图: 点击灰色色块,进行变色。 父Widget管理...

网友评论

      本文标题:Flutter widget参数Key

      本文链接:https://www.haomeiwen.com/subject/gnazlrtx.html