顯示 Snackbar
如何實現用於顯示訊息的 Snackbar。
當某些操作發生時,向用戶進行簡要提示非常有用。例如,當用戶從列表中滑走一條訊息時,你可能希望通知他們訊息已被刪除。你甚至可以為他們提供一個撤銷該操作的選項。
在 Material Design 中,這項工作由 SnackBar 完成。本指南透過以下步驟實現 Snackbar:
- 建立一個
Scaffold。 - 顯示一個
SnackBar。 - 提供一個可選操作。
1. 建立 Scaffold
#
在構建遵循 Material Design 指南的應用程式時,請賦予應用一致的視覺結構。在此示例中,將 SnackBar 顯示在螢幕底部,且不遮擋其他重要的元件,例如 FloatingActionButton。
來自 material 庫 的 Scaffold 元件可以建立這種視覺結構,並確保重要元件不會發生重疊。
dart
return MaterialApp(
title: 'SnackBar Demo',
home: Scaffold(
appBar: AppBar(title: const Text('SnackBar Demo')),
body: const SnackBarPage(),
),
);
2. 顯示 SnackBar
#
有了 Scaffold 後,就可以顯示 SnackBar 了。首先,建立一個 SnackBar,然後使用 ScaffoldMessenger 將其顯示出來。
dart
const snackBar = SnackBar(content: Text('Yay! A SnackBar!'));
// Find the ScaffoldMessenger in the widget tree
// and use it to show a SnackBar.
ScaffoldMessenger.of(context).showSnackBar(snackBar);
3. 提供可選操作
#當 SnackBar 顯示時,你可能希望為使用者提供一個操作。例如,如果使用者不小心刪除了某條訊息,SnackBar 中的 action 可以允許使用者恢復該訊息。
以下是一個為 SnackBar 元件提供額外 action 的示例:
dart
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change.
},
),
);
互動示例
#import 'package:flutter/material.dart';
void main() => runApp(const SnackBarDemo());
class SnackBarDemo extends StatelessWidget {
const SnackBarDemo({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SnackBar Demo',
home: Scaffold(
appBar: AppBar(title: const Text('SnackBar Demo')),
body: const SnackBarPage(),
),
);
}
}
class SnackBarPage extends StatelessWidget {
const SnackBarPage({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () {
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change.
},
),
);
// Find the ScaffoldMessenger in the widget tree
// and use it to show a SnackBar.
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
child: const Text('Show SnackBar'),
),
);
}
}