Flutter Key 讲解

key ---  Value

模式模式下,value就是我们的widget

为什么要有key?

flutter中是增量更新,只更新了差异点。

任何的恶widget都有key。

有些时候不使用key。会导致渲染引擎失控,更新的时候没有参考物key.

为什么会有上面失控的情况?

---------Widget. Tree-------------------- 内部渲染引擎  Element Tree---

                         |                                                        |

--------一系列的类。--------对应--------------实例-------------------

-------例如:My,My,My,-----------------MyElement,MyElement,MyElement--

                                                                                   有状态1,状态2,状态3.

如果是相同的类型,才会考虑key来解决

当MY删除一个是后,就会导致类型和Element无法对应。

对应关系不一致导致失控

全局的key是什么

abstract class Key {
  /// Construct a [ValueKey<String>] with the given [String].
  ///
  /// This is the simplest way to create keys.
  const factory Key(String value) = ValueKey<String>;

  /// Default constructor, used by subclasses.
  ///
  /// Useful so that subclasses can call us, because the [Key.new] factory
  /// constructor shadows the implicit constructor.
  @protected
  const Key.empty();
}

上面是抽象的key。

子类:LocalKey 局部的key,周围同一级的唯一性的保障,---开发尽量使用这个localkey性能更                                       高

  ---》 LocalKey的子类 ValueKey 等等。
GlobalKey 全局的key,整个app里的全局唯一性,性能就低一点。

//------------------------//

无状态的部件是不用考虑key的--一般情况

有状态的widget,并且有相同类型才考虑key。

//-------------------------//

ObjectKey --引用的对比。
ValueKey --值的对比。

UniqueKey()?

这个是主动放弃key的关系,现象是不会保持数据。

应用的场景---------》可以主动丢弃,来证明需要更新---强制性告诉flutter丢弃上一帧的key。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值