显示 Cupertino sheet
如何实现 Cupertino sheet 以显示消息和内容。
Cupertino sheet 是一种 iOS 风格的模态底部 sheet,用于展示内容或选项。它从屏幕底部滑入,可下拉关闭。
在 Flutter 中,这由 showCupertinoSheet
负责。本食谱通过以下步骤实现 Cupertino sheet:
-
创建
CupertinoApp或MaterialApp。 显示 sheet 内容。
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. 显示 sheet 内容
#
基本应用结构就绪后,显示 sheet。要展示它,请调用 showCupertinoSheet 并提供 scrollableBuilder,返回 sheet 的内容,例如
SingleChildScrollView。
dart
showCupertinoSheet(
context: context,
scrollableBuilder: (context, scrollController) {
return SingleChildScrollView(
controller: scrollController,
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,
scrollableBuilder: (context, scrollController) {
return SingleChildScrollView(
controller: scrollController,
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'),
),
),
);
}
}
本页内容对你有帮助吗?
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-04。查看文档源码 或者 为本页面内容提出建议。