Skip to main content

當啟用 maintainState 時,Visibility 元件預設不再可聚焦

Visibility 元件 (Widget) 在啟用 maintainState 時,預設不再隱式保留其子元件的可聚焦性。

摘要

#

此變更是為了解決一個問題, 即 IndexedStack 的隱藏子元件會因底層 Visibility 元件 (Widget) 的預設行為, 而能夠透過鍵盤事件取得焦點 (詳見 issue)。

變更說明

#

主要的變更是,當啟用 maintainState 時,Visibility 元件 (Widget) 預設不再可聚焦。 若要讓隱藏的元件 (Widget) 仍然可聚焦,必須同時將新的旗標 maintainFocusabilitymaintainState 設為 true。

遷移指南

#

如果您的應用程式中有 Visibility 元件 (Widget),且未將 maintainState 設為 true, 則不需要做任何變更。

如果您的應用程式中有 Visibility 元件 (Widget),且將 maintainState 設為 true, 並且您依賴於先前預設允許聚焦隱藏元件 (Widget) 的行為, 則需要將 maintainFocusability 設為 true。

遷移前的程式碼:

dart
child: Visibility(
    maintainState: true,
    child: SomeWidget(),
)

遷移後的程式碼:

dart
child: Visibility(
    maintainState: true,
    maintainFocusability: true,
    child: SomeWidget(),
)

時程

#

合併於版本:3.34.0-pre
正式版本:3.35

參考資料

#

API 文件:

相關議題:

相關 PR: