當啟用 maintainState 時,Visibility 元件預設不再可聚焦
Visibility 元件 (Widget) 在啟用 maintainState 時,預設不再隱式保留其子元件的可聚焦性。
摘要
#
此變更是為了解決一個問題,
即 IndexedStack 的隱藏子元件會因底層 Visibility 元件 (Widget) 的預設行為,
而能夠透過鍵盤事件取得焦點
(詳見 issue)。
變更說明
#
主要的變更是,當啟用 maintainState 時,Visibility 元件 (Widget) 預設不再可聚焦。
若要讓隱藏的元件 (Widget) 仍然可聚焦,必須同時將新的旗標 maintainFocusability 與 maintainState
設為 true。
遷移指南
#
如果您的應用程式中有 Visibility 元件 (Widget),且未將 maintainState 設為 true,
則不需要做任何變更。
如果您的應用程式中有 Visibility 元件 (Widget),且將 maintainState 設為 true,
並且您依賴於先前預設允許聚焦隱藏元件 (Widget) 的行為,
則需要將 maintainFocusability 設為 true。
遷移前的程式碼:
child: Visibility(
maintainState: true,
child: SomeWidget(),
)
遷移後的程式碼:
child: Visibility(
maintainState: true,
maintainFocusability: true,
child: SomeWidget(),
)
時程
#
合併於版本:3.34.0-pre
正式版本:3.35
參考資料
#API 文件:
相關議題:
相關 PR:
Unless stated otherwise, the documentation on this site reflects Flutter 3.44.0. Page last updated on 2026-06-14. View source or report an issue.