Flutter Cupertino风格底部弹出菜单插件flutter_cupertino_bottom_sheet的使用
Flutter Cupertino风格底部弹出菜单插件flutter_cupertino_bottom_sheet的使用
一个轻松模仿Cupertino底部弹出菜单的插件
不像其他现有的插件需要复杂的设置,flutter_cupertino_bottom_sheet
不需要 Scaffold
来实现这一功能。你可以在任何地方和任何时候使用它。你只需在应用初始化时用 CupertinoBottomSheetRepaintBoundary()
包裹你的 MaterialApp
即可。就这么简单,甚至不需要特定的上下文。
它是如何工作的
非常简单。它内部使用了一个重绘边界来创建整个屏幕的截图,并将其转换为 RawImage
。因此,即使之前的路由保持其状态,这也不重要。它不需要知道任何关于之前路由的信息,因为它使用的是截图而不是小部件快照。
开始使用
首先,在你的应用初始化代码中导入该包:
import 'package:flutter_cupertino_bottom_sheet/flutter_cupertino_bottom_sheet.dart';
然后,将 CupertinoBottomSheetRepaintBoundary()
包裹到你的 MaterialApp
或其他类型的根组件中:
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return CupertinoBottomSheetRepaintBoundary(
child: MaterialApp(
navigatorKey: cupertinoBottomSheetNavigatorKey,
title: 'Flutter Cupertino Bottom Sheet',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: const TestPage(),
),
);
}
}
这样可以为库提供必要的 RenderRepaintBoundary
。
接下来,你可以使用 Navigator
推送这个路由:
Navigator.of(context).push(
CupertinoBottomSheetRoute(
args: const CupertinoBottomSheetRouteArgs(
swipeSettings: SwipeSettings(
canCloseBySwipe: true,
),
),
builder: (context) {
return const TestPage();
},
),
);
想要更少的代码?没问题!
你可以传递一个 cupertinoBottomSheetNavigatorKey
到你的应用初始化中:
[@override](/user/override)
Widget build(BuildContext context) {
return CupertinoBottomSheetRepaintBoundary(
child: MaterialApp(
navigatorKey: cupertinoBottomSheetNavigatorKey,
title: 'Flutter Cupertino Bottom Sheet',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: const TestPage(),
),
);
}
然后,你可以从任何地方调用 openCupertinoBottomSheet()
,而无需关心上下文:
openCupertinoBottomSheet(builder: (c) {
return const TestPage();
args: CupertinoBottomSheetRouteArgs(
appBar: CupertinoBottomSheetAppBar.withCloseButton(
title: 'Cupertino Actionsheet',
buttonText: 'Done',
headerStyle: Theme.of(context).textTheme.bodyMedium,
onClosePressed: Navigator.of(context).pop,
),
),
});
示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:flutter_cupertino_bottom_sheet/flutter_cupertino_bottom_sheet.dart';
import 'test_page.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return CupertinoBottomSheetRepaintBoundary(
child: MaterialApp(
navigatorKey: cupertinoBottomSheetNavigatorKey,
title: 'Flutter Cupertino Bottom Sheet',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: const TestPage(),
),
);
}
}
更多关于Flutter Cupertino风格底部弹出菜单插件flutter_cupertino_bottom_sheet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Cupertino风格底部弹出菜单插件flutter_cupertino_bottom_sheet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 flutter_cupertino_bottom_sheet
插件来实现 Cupertino 风格的底部弹出菜单的示例代码。这个插件允许你在 Flutter 应用中轻松创建类似于 iOS 的底部弹出菜单。
首先,确保你已经在 pubspec.yaml
文件中添加了 flutter_cupertino_bottom_sheet
依赖:
dependencies:
flutter:
sdk: flutter
flutter_cupertino_bottom_sheet: ^^最新版本号(请替换为当前最新版本)
然后运行 flutter pub get
来安装依赖。
接下来,在你的 Dart 文件中,你可以按照以下方式使用 flutter_cupertino_bottom_sheet
:
import 'package:flutter/material.dart';
import 'package:flutter_cupertino_bottom_sheet/cupertino_bottom_sheet.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Cupertino Bottom Sheet Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
void _showBottomSheet() {
showCupertinoBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return CupertinoBottomSheet(
title: Text('底部弹出菜单标题'),
backgroundColor: CupertinoColors.white,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CupertinoButton(
color: CupertinoColors.activeBlue,
child: Text('选项 1'),
onPressed: () {
Navigator.of(context).pop(); // 关闭底部弹出菜单
// 在这里处理选项 1 的点击事件
},
),
CupertinoButton(
color: CupertinoColors.activeBlue,
child: Text('选项 2'),
onPressed: () {
Navigator.of(context).pop(); // 关闭底部弹出菜单
// 在这里处理选项 2 的点击事件
},
),
CupertinoButton(
color: CupertinoColors.activeBlue,
child: Text('选项 3'),
onPressed: () {
Navigator.of(context).pop(); // 关闭底部弹出菜单
// 在这里处理选项 3 的点击事件
},
),
],
),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Cupertino Bottom Sheet Demo'),
),
body: Center(
child: CupertinoButton(
color: CupertinoColors.activeBlue,
child: Text('显示底部弹出菜单'),
onPressed: _showBottomSheet,
),
),
);
}
}
在这个示例中,我们创建了一个简单的 Flutter 应用,其中包含一个按钮,点击该按钮时会显示一个 Cupertino 风格的底部弹出菜单。底部弹出菜单包含三个选项,每个选项都是一个 CupertinoButton
,点击后会关闭底部弹出菜单(你可以根据需要添加具体的处理逻辑)。
这个示例展示了如何使用 flutter_cupertino_bottom_sheet
插件来创建和操作 Cupertino 风格的底部弹出菜单。当然,根据实际需求,你可以进一步自定义和扩展这个示例。