[flutter]showModalBottomSheet 最完整的 Flutter 範例
showModalBottomSheet 用於在畫面底部彈出一個 模態(Modal)底部對話框,可用於顯示選項、表單或其他 UI 元件。
最基本的 showModalBottomSheet
✅ 效果:
- 點擊按鈕後,彈出 底部對話框
- 點擊「關閉」按鈕後,對話框關閉
讓 BottomSheet 可拖動(isScrollControlled)
✅ 效果:
- 可拖動,可以往上拉高、往下拉關閉
isScrollControlled: true讓BottomSheet可調整高度
加入 ListView
如果 BottomSheet 裡面有很多內容,建議使用 ListView 來確保滾動正常:
✅ 效果:
- BottomSheet 內部可以 滾動
- 適合 大量選項列表
自訂圓角樣式
可以使用 shape 設定圓角:
✅ 效果:
- 上方圓角設計,更美觀
全螢幕 BottomSheet
✅ 效果:
- BottomSheet 佔滿整個螢幕
- 適用於 全屏選單或表單
返回 Future 獲取 BottomSheet 回傳值
如果要讓 BottomSheet 回傳值給主頁面,可以使用 await:
✅ 效果:
Navigator.pop(context, '選擇 A')回傳值await接收回傳值- 顯示 SnackBar 提示選擇結果
🚀 總結
| 功能 | 實現方式 |
|---|---|
| 基本 BottomSheet | showModalBottomSheet(context: context, builder: ...) |
| 可拖動 BottomSheet | DraggableScrollableSheet |
帶 ListView 的 BottomSheet | ListView.builder() |
| 設定圓角 | shape: RoundedRectangleBorder(...) |
| 全屏 BottomSheet | height: MediaQuery.of(context).size.height |
| 回傳數據 | await showModalBottomSheet() + Navigator.pop(context, value) |
留言
張貼留言