Flutter动画菜单按钮插件animated_menu_button的使用

Flutter 动画菜单按钮插件 animated_menu_button 的使用

简介

本插件提供了可以进一步提升 UI 体验的动画按钮。

示例

以下是一个完整的示例代码,展示如何在 Flutter 应用中使用 AnimatedMenuButton 插件。

# File: example.dart

import 'package:flutter/material.dart';
import 'package:rotate_pills_animation/components/animated_,menu_button.dart'; // 假设这是正确的导入路径

class ExamplePage extends StatelessWidget {
  const ExamplePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          const Expanded(
            child: Center(
              child: Text("Hello world"),
            ),
          ),
          SizedBox(
            height: 100,
            child: Row(
              children: [
                const SizedBox(
                  width: 60,
                  child: Icon(Icons.ac_unit),
                ),
                const SizedBox(
                  width: 60,
                  child: Icon(Icons.ac_unit),
                ),
                Expanded(
                    child: Center(
                  child: AnimatedMenuButton(
                    radius: 50, // 设置按钮的半径
                    homeWidget: item(
                      color: Colors.black, // 设置主按钮的颜色
                      child: const Icon(
                        Icons.add, // 主按钮图标
                        color: Colors.white,
                      ),
                    ),
                    actionWidgets: [
                      InkWell(
                        onTap: () {
                          print("add"); // 打印 "add",表示点击了添加操作
                        },
                        child: item(
                          color: Colors.green, // 设置第一个操作按钮的颜色
                          child: const Icon(Icons.face), // 第一个操作按钮图标
                        ),
                      ),
                      InkWell(
                        onTap: () {
                          print("image"); // 打印 "image",表示点击了图像操作
                        },
                        child: item(
                          color: Colors.blue, // 设置第二个操作按钮的颜色
                          child: const Icon(Icons.image), // 第二个操作按钮图标
                        ),
                      ),
                      InkWell(
                        onTap: () {
                          print("cached_rounded"); // 打印 "cached_rounded",表示点击了缓存操作
                        },
                        child: item(
                          color: Colors.red, // 设置第三个操作按钮的颜色
                          child: const Icon(Icons.cached_rounded), // 第三个操作按钮图标
                        ),
                      )
                    ],
                    animatedDuration: const Duration(milliseconds: 1000), // 设置动画持续时间
                  ),
                )),
                const SizedBox(
                  width: 60,
                  child: Icon(Icons.ac_unit),
                ),
                const SizedBox(
                  width: 60,
                  child: Icon(Icons.ac_unit),
                ),
              ],
            ),
          )
        ],
      ),
    );
  }

  Widget item({required Widget child, required Color color}) {
    return Container(
      padding: const EdgeInsets.all(5),
      decoration: BoxDecoration(
        shape: BoxShape.circle,
        color: color,
      ),
      child: child,
    );
  }
}

使用说明

  1. 安装插件: 在 pubspec.yaml 文件中添加依赖项:

    dependencies:
      rotate_pills_animation: ^版本号
    
  2. 导入组件: 在你的 Dart 文件中导入组件:

    import 'package:rotate_pills_animation/components/animated_,menu_button.dart';
    

更多关于Flutter动画菜单按钮插件animated_menu_button的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动画菜单按钮插件animated_menu_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


animated_menu_button 是一个 Flutter 插件,用于创建带有动画效果的菜单按钮。它可以帮助你实现一个漂亮的、带有动画的菜单按钮,用户可以点击该按钮来展开或收起菜单。

安装

首先,你需要在 pubspec.yaml 文件中添加 animated_menu_button 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  animated_menu_button: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

基本使用

下面是一个简单的示例,展示了如何使用 animated_menu_button 插件:

import 'package:flutter/material.dart';
import 'package:animated_menu_button/animated_menu_button.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Animated Menu Button Example'),
        ),
        body: Center(
          child: AnimatedMenuButton(
            items: [
              MenuItem(
                icon: Icons.home,
                label: 'Home',
                onTap: () {
                  print('Home tapped');
                },
              ),
              MenuItem(
                icon: Icons.settings,
                label: 'Settings',
                onTap: () {
                  print('Settings tapped');
                },
              ),
              MenuItem(
                icon: Icons.person,
                label: 'Profile',
                onTap: () {
                  print('Profile tapped');
                },
              ),
            ],
            child: Icon(Icons.menu),
          ),
        ),
      ),
    );
  }
}

参数说明

  • items: 一个 MenuItem 列表,每个 MenuItem 包含一个图标、标签和点击事件。
  • child: 菜单按钮的图标或文本,通常是 Icon(Icons.menu)
  • animationDuration: 动画的持续时间,默认为 Duration(milliseconds: 300)
  • animationCurve: 动画的曲线,默认为 Curves.easeInOut
  • menuAlignment: 菜单的展开方向,默认为 MenuAlignment.bottom
  • menuPadding: 菜单的内边距,默认为 EdgeInsets.all(8.0)
  • menuBackgroundColor: 菜单的背景颜色,默认为 Colors.white
  • menuElevation: 菜单的阴影效果,默认为 4.0

自定义样式

你可以通过调整 AnimatedMenuButton 的参数来自定义菜单的样式和动画效果。例如:

AnimatedMenuButton(
  items: [
    MenuItem(
      icon: Icons.home,
      label: 'Home',
      onTap: () {
        print('Home tapped');
      },
    ),
    MenuItem(
      icon: Icons.settings,
      label: 'Settings',
      onTap: () {
        print('Settings tapped');
      },
    ),
  ],
  child: Icon(Icons.menu),
  animationDuration: Duration(milliseconds: 500),
  animationCurve: Curves.bounceOut,
  menuAlignment: MenuAlignment.top,
  menuPadding: EdgeInsets.all(16.0),
  menuBackgroundColor: Colors.blue,
  menuElevation: 8.0,
);
回到顶部