帶操作的SnackBar不再自動消失
概述
#帶操作的SnackBar的預設行為已發生改變。之前,帶操作的SnackBar如果啟用了talkback,則不會自動消失。現在,所有帶操作的SnackBar預設都處於不可消失狀態,直到使用者與操作按鈕進行互動。
背景
#帶操作按鈕的SnackBar現在被視為需要使用者互動的更持久的通知。此更改透過確保關鍵通知保留在螢幕上直到被使用者確認,從而改善了可訪問性和使用者體驗。
變更說明
#此更改符合Material 3關於SnackBar的設計規範。
- 舊行為:帶操作按鈕的
SnackBar會在持續一段時間後自動消失,除非啟用了talkback。 - 新行為:帶操作按鈕的
SnackBar不會自動消失;它會一直保留在螢幕上,直到使用者手動將其關閉。
要覆蓋此行為,已為SnackBar添加了一個可選的persist屬性。當persist為true時,SnackBar不會自動消失
並會一直保留在螢幕上,直到使用者手動將其關閉。當persist為false時,SnackBar將在其標準持續時間後自動消失,無論是否存在操作。當persist為null時,SnackBar將遵循預設行為,即如果存在操作,則不會自動消失。
遷移指南
#要為帶操作的SnackBar恢復舊的自動消失行為,請將persist設定為false。
遷移前的程式碼
dart
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: const Text('This is a snackbar with an action.'),
action: SnackBarAction(
label: 'Action',
onPressed: () {
// Perform some action
},
),
),
);遷移後的程式碼
dart
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: const Text('This is a snackbar with an action.'),
persist: false, // Add this line to restore auto-dismiss behavior
action: SnackBarAction(
label: 'Action',
onPressed: () {
// Perform some action
},
),
),
);時間線
#已登陸版本:TBD 穩定版釋出:TBD
參考資料
#API 文件
相關 PR