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。 檢視原始碼 或 回報問題。