顯示 Cupertino 表單
如何實現 Cupertino 底部彈窗以顯示訊息和內容。
Cupertino 底部彈窗是一種 iOS 風格的模態底部彈窗,用於呈現內容或選項。它會從螢幕底部滑入,並可以透過向下拉動來關閉。
在 Flutter 中,這可以透過 showCupertinoSheet 來實現。本教程透過以下步驟來實現一個 Cupertino 底部彈窗:
- 建立一個
CupertinoApp或MaterialApp。 - 顯示彈窗內容。
1. 建立一個 CupertinoApp
#
在構建遵循 iOS 設計準則的應用時,可以使用 CupertinoApp。以下示例在螢幕中央提供了一個用於觸發模態彈窗的按鈕。
dart
class CupertinoSheetDemo extends StatelessWidget {
const CupertinoSheetDemo({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'CupertinoSheet Demo',
home: CupertinoSheetPage(),
);
}
}
2. 顯示彈窗內容
#在搭建好基礎應用結構後,即可顯示彈窗。呼叫 showCupertinoSheet 並提供一個 builder,該構建器返回彈窗的內容(例如 SingleChildScrollView)即可顯示它。
dart
showCupertinoSheet(
context: context,
builder: (context) {
return SingleChildScrollView(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const SizedBox(height: 100),
const Text('This is a Cupertino sheet'),
const SizedBox(height: 20),
CupertinoButton(
child: const Text('Close'),
onPressed: () {
Navigator.pop(context);
},
),
],
),
),
);
},
);
互動示例
#import 'package:flutter/cupertino.dart';
void main() => runApp(const CupertinoSheetDemo());
class CupertinoSheetDemo extends StatelessWidget {
const CupertinoSheetDemo({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'CupertinoSheet Demo',
home: CupertinoSheetPage(),
);
}
}
class CupertinoSheetPage extends StatelessWidget {
const CupertinoSheetPage({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(
middle: Text('CupertinoSheet Demo'),
),
child: Center(
child: CupertinoButton.filled(
onPressed: () {
showCupertinoSheet(
context: context,
builder: (context) {
return SingleChildScrollView(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const SizedBox(height: 100),
const Text('This is a Cupertino sheet'),
const SizedBox(height: 20),
CupertinoButton(
child: const Text('Close'),
onPressed: () {
Navigator.pop(context);
},
),
],
),
),
);
},
);
},
child: const Text('Show Sheet'),
),
),
);
}
}