显示 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'),
),
),
);
}
}