Flutter轨道菜单插件orbitmenu的使用
Flutter轨道菜单插件orbitmenu的使用
描述
OrbitMenu 是一个为 Flutter 应用程序创建动态圆形菜单的多功能插件,支持交互式动画。现在它新增了弹跳和旋转两种动画风格,增强了用户体验。
可以实现的功能
- 动态圆形菜单,中央有一个大圆圈。
- 周围有多个小圆圈作为按钮。
- 完全自定义颜色、大小和行为。
- 调整小圆圈与中心圆的距离。
- 中心圆带有可定制的圆形按钮。
- 三种动画风格:弹跳、旋转、轨道。
- 完全自定义颜色、大小和行为。
- 使用布尔值切换动画。
- 添加图片到项目中。
安装
要在您的 Flutter 项目中使用 OrbitMenu,请在 pubspec.yaml
文件中添加以下依赖项:
dependencies:
orbitmenu: ^latest_version
然后运行 flutter pub get
来安装该包。
使用方法
要实现圆形菜单,请按照以下步骤操作:
-
导入并使用
AnimatedOrbitMenu
和相关配置类:import 'package:orbitmenu/animated_orbit_menu.dart'; import 'package:orbitmenu/orbit_menu_config.dart'; import 'package:orbitmenu/orbit_menu_animation_type.dart';
-
使用
AnimatedOrbitMenu
创建菜单:AnimatedOrbitMenu( animate: true, config: OrbitMenuConfig( animationDuration: const Duration(seconds: 1), animationType: OrbitMenuAnimationType.bouncing, menuPositionX: widthSize / 2, menuPositiony: heightSize / 2, menuColor: const Color.fromARGB(255, 1, 1, 1), radius: 100, menuItems: itemList, itemSize: 100, borderCentralMenu: Border.all(color: Colors.red, width: 5), itemOffsetPercentage: 1, ), );
-
添加自定义控件 现在,您可以将自定义控件添加到围绕父圆旋转的子元素列表中。请确保在配置中声明尺寸(itemSize),以便保持元素与父圆同步。您的控件将嵌套在一个父容器中。
AnimatedOrbitMenu( animate: true, config: OrbitMenuConfig( animationDuration: Duration(seconds: 5), animationType: OrbitMenuAnimationType.rotating, menuPositionx: widthSize / 2, menuPositiony: heightSize / 2, menuColor: Colors.deepPurple, radius: 100, menuItems: itemList, itemSize: 50, titleStyle: TextStyle(color: Colors.white), itemOffsetPercentage: 0.5, myWidget: Container(color: Colors.red,) ) );
示例
下面是一个示例代码,展示了如何使用 OrbitMenu 插件创建一个圆形菜单:
import 'package:flutter/material.dart';
import 'package:orbitmenu/animated_orbit_menu.dart';
import 'package:orbitmenu/item.dart';
import 'package:orbitmenu/orbit_menu_config.dart';
import 'package:orbitmenu/orbit_menu_animation_type.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const Scaffold(
body: Menu(),
),
);
}
}
class Menu extends StatelessWidget {
const Menu({super.key});
/// Build the widget with the animation
[@override](/user/override)
Widget build(BuildContext context) {
final heightSize = MediaQuery.of(context).size.height;
final widthSize = MediaQuery.of(context).size.width;
int numberOfItems = 5;
List<Item> itemList = List.generate(
numberOfItems,
(i) => Item(
title: (i + 1).toString(),
onPressed: () {
print('touch $i');
},
image: 'assets/images/${i+}.png'));
return AnimatedOrbitMenu(
animate: true,
config: OrbitMenuConfig(
animationDuration: const Duration(seconds: 1),
animationType: OrbitMenuAnimationType.bouncing,
menuPositionX: widthSize / 2,
menuPositionY: heightSize / 2,
menuColor: const Color.fromARGB(255, 1, 5, 5),
radius: 100,
menuItems: itemList,
itemSize: 100,
borderCentralMenu: Border.all(color: Colors.red, width: 5),
itemOffsetPercentage: 1,),
);
}
}
更多关于Flutter轨道菜单插件orbitmenu的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter轨道菜单插件orbitmenu的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用orbitmenu
插件的示例代码。orbitmenu
是一个用于创建轨道菜单(Orbit Menu)的插件,通常用于显示多个选项,用户可以通过手势或点击来选择。
首先,确保你已经在你的pubspec.yaml
文件中添加了orbitmenu
依赖:
dependencies:
flutter:
sdk: flutter
orbitmenu: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中实现轨道菜单。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:orbitmenu/orbitmenu.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('OrbitMenu Example'),
),
body: Center(
child: OrbitMenuExample(),
),
),
);
}
}
class OrbitMenuExample extends StatefulWidget {
@override
_OrbitMenuExampleState createState() => _OrbitMenuExampleState();
}
class _OrbitMenuExampleState extends State<OrbitMenuExample> {
late OrbitMenuController orbitMenuController;
@override
void initState() {
super.initState();
orbitMenuController = OrbitMenuController();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
// Trigger button for opening the orbit menu
Positioned(
bottom: 50,
right: 50,
child: ElevatedButton(
onPressed: () {
orbitMenuController.toggleMenu();
},
child: Text('Open Menu'),
),
),
// OrbitMenu widget
OrbitMenu(
controller: orbitMenuController,
items: [
OrbitMenuItem(
icon: Icons.home,
label: 'Home',
onTap: () {
print('Home tapped');
orbitMenuController.closeMenu();
},
),
OrbitMenuItem(
icon: Icons.search,
label: 'Search',
onTap: () {
print('Search tapped');
orbitMenuController.closeMenu();
},
),
OrbitMenuItem(
icon: Icons.settings,
label: 'Settings',
onTap: () {
print('Settings tapped');
orbitMenuController.closeMenu();
},
),
],
menuRadius: 150.0,
menuAngle: 30.0,
itemSpacing: 20.0,
backgroundColor: Colors.white,
elevation: 8.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16.0),
),
),
],
);
}
}
代码解释
- 依赖添加:在
pubspec.yaml
中添加orbitmenu
依赖。 - 主应用:创建一个
MyApp
类,它包含一个Scaffold
,并在body
中使用Center
组件居中显示OrbitMenuExample
。 - OrbitMenuExample:这是一个
StatefulWidget
,它包含一个OrbitMenuController
用于控制轨道菜单的打开和关闭。 - 触发按钮:使用
ElevatedButton
作为触发按钮,点击按钮时调用orbitMenuController.toggleMenu()
方法。 - OrbitMenu:配置轨道菜单的属性,包括菜单项、半径、角度、间距、背景颜色、阴影和形状等。
- OrbitMenuItem:每个菜单项包含图标、标签和点击事件处理函数。
运行这段代码后,你应该会在屏幕上看到一个按钮,点击按钮会打开轨道菜单,点击菜单项会打印相应的信息并关闭菜单。
请注意,实际使用时,你可能需要根据需求调整轨道菜单的样式和布局。此外,请确保orbitmenu
插件的版本与你的Flutter SDK版本兼容。