forgetChild() 方法必须调用 super
摘要
#最近的全局键重复检测重构现在要求覆盖 forgetChild()
的 Element
子类调用 super()
。
上下文
#当遇到将在稍后由元素重建清理的全局键重复时,我们必须不报告全局键重复。我们之前的实现一旦检测到重复就会抛出错误,并且如果具有重复全局键的元素将要重建,则不会等待重建。
新实现会在构建周期内跟踪所有全局键重复,并且仅在该周期的结束时验证全局键重复,而不是立即抛出错误。作为重构的一部分,我们实现了一种机制,如果发生了重建,则在 forgetChild
中删除以前的全局键重复。但是,这要求覆盖 forgetChild
的所有 Element
子类都调用 super
方法。
更改说明
#抽象类 Element
的 forgetChild
具有删除全局键预留的基本实现,并且由 @mustCallSuper
元标记强制执行。所有覆盖该方法的子类都必须调用 super
;否则,分析器将显示一个 lint 错误,并且全局键重复检测可能会抛出意外错误。
迁移指南
#在以下示例中,应用程序的 Element
子类覆盖了 forgetChild
方法。
迁移前代码
dart
class CustomElement extends Element {
@override
void forgetChild(Element child) {
...
}
}
迁移后代码
dart
class CustomElement extends Element {
@override
void forgetChild(Element child) {
...
super.forgetChild(child);
}
}
时间线
#包含在版本中:1.16.3
稳定版发布:1.17
参考文献
#API 文档
相关问题
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面最后更新于 2024-04-04。 查看源代码 或 报告问题.