"Inheritance"
- 4.2 抽象基類 ABC
定義介面契約
- 6.3 如何新增語言解析器
繼承 ABC 實作新解析器
- late final 欄位不能用欄位覆蓋 — Dart 欄位的隱藏 getter/setter 機制
Dart 的 late final 欄位在底層會生成 getter 和 setter。子類用另一個欄位覆蓋時,會產生兩個獨立的儲存槽,父類程式碼讀到的是未初始化的那份,導致 LateInitializationError。Dart analyzer 要求改用 getter 覆寫。
- Widget 子類重新宣告 key — 遮蔽父類屬性與 duplicate key 風險
在 StatelessWidget 子類中重新宣告 final Key? key,會遮蔽 Widget 繼承的 key 屬性,產生兩份儲存槽。若再把同一個 key 往下傳給 child widget,同一棵子樹出現重複 key,rebuild 時 Flutter 可能拋錯。