Flutter快速访问浮动按钮插件fab_speed_dial的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter快速访问浮动按钮插件fab_speed_dial的使用

Fab Speed Dial

Fab Speed Dial 是一个用于创建可定制浮动操作按钮(FAB)速拨菜单的 Flutter 包。

安装

pubspec.yaml 文件中添加 fab_speed_dial

dependencies:
  flutter:
    sdk: flutter
  fab_speed_dial: ^x.x.x # 替换为最新版本

执行 flutter pub get 来安装依赖。


示例代码

以下是一个完整的示例代码,展示如何使用 fab_speed_dial 插件。

import 'package:fab_speed_dial/speed_dial_options.dart'; // 导入 SpeedDialOption
import 'package:flutter/material.dart';
import 'package:fab_speed_dial/fab_speed_dial.dart'; // 导入 FabSpeedDial

void main() {
  runApp(MyApp()); // 运行应用
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(), // 主页面
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState(); // 初始化状态
}

class _MyHomePageState extends State<MyHomePage> {
  bool _isFabOpen = false; // 控制速拨菜单的打开状态

  // 切换速拨菜单的打开/关闭状态
  void _toggleFab() {
    setState(() {
      _isFabOpen = !_isFabOpen;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar( // 设置应用栏
        title: Text('FabSpeedDial 示例'), // 应用栏标题
      ),
      body: Center( // 页面中心内容
        child: Text('点击按钮打开速拨菜单。'),
      ),
      floatingActionButton: Expanded( // 扩展浮动按钮
        child: FabSpeedDial( // 使用 FabSpeedDial
          children: [ // 定义速拨菜单的子项
            SpeedDialOption( // 第一个选项
              onPressed: () { // 按钮点击事件
                print('第一个动作');
              },
              icon: Icon(Icons.message), // 图标
              text: Text("Hello"), // 文本
            ),
            SpeedDialOption( // 第二个选项
              onPressed: () { // 按钮点击事件
                print('第二个动作');
              },
              icon: Icon(Icons.call), // 图标
              text: Text("Call"), // 文本
            ),
          ],
          closedForegroundColor: Colors.white, // 关闭状态下的文字颜色
          openedForegroundColor: Colors.white, // 打开状态下的文字颜色
          closedBackgroundColor: Colors.blue, // 关闭状态下的背景颜色
          openedBackgroundColor: Colors.black, // 打开状态下的背景颜色
          closedElevation: 0, // 关闭状态下的阴影高度
          openedElevation: 0, // 打开状态下的阴影高度
          visible: true, // 是否可见
          isDialVisible: _isFabOpen, // 当前速拨菜单的状态
          toggleDial: _toggleFab, // 控制速拨菜单的开关
        ),
      ),
    );
  }
}

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

1 回复

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


fab_speed_dial 是一个用于在 Flutter 应用中快速创建浮动按钮(Floating Action Button)并展开多个子按钮的插件。它可以帮助你实现点击主按钮后展开多个子按钮的效果,类似于 Google Material Design 中的 Speed Dial 效果。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  fab_speed_dial: ^3.0.0

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

基本使用

以下是一个简单的示例,展示如何使用 fab_speed_dial 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('FAB Speed Dial Example'),
        ),
        body: Center(
          child: Text('Press the FAB to see the speed dial!'),
        ),
        floatingActionButton: FabSpeedDial(
          animatedIcon: AnimatedIcons.menu_close,
          animatedIconTheme: IconThemeData(size: 22.0),
          children: [
            IconButton(
              icon: Icon(Icons.add),
              onPressed: () {
                print('Add pressed');
              },
            ),
            IconButton(
              icon: Icon(Icons.edit),
              onPressed: () {
                print('Edit pressed');
              },
            ),
            IconButton(
              icon: Icon(Icons.delete),
              onPressed: () {
                print('Delete pressed');
              },
            ),
          ],
        ),
      ),
    );
  }
}

参数说明

  • animatedIcon: 主按钮的图标,通常使用 AnimatedIcons.menu_close 来实现打开和关闭的动画效果。
  • animatedIconTheme: 主按钮图标的样式,可以设置图标的大小、颜色等。
  • children: 子按钮列表,每个子按钮都是一个 IconButton,可以设置图标和点击事件。
  • onPress: 主按钮的点击事件。
  • closeOnSelect: 是否在选择子按钮后自动关闭 Speed Dial,默认为 true
  • tooltip: 主按钮的提示文本。
  • heroTag: 用于 Hero 动画的标签,通常是唯一的。

自定义样式

你可以通过设置 FabSpeedDial 的其他参数来自定义样式,例如:

  • backgroundColor: 主按钮的背景颜色。
  • foregroundColor: 主按钮的前景颜色(图标颜色)。
  • elevation: 主按钮的阴影高度。
  • shape: 主按钮的形状,可以设置为圆形、矩形等。

完整示例

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('FAB Speed Dial Example'),
      ),
      body: Center(
        child: Text('Press the FAB to see the speed dial!'),
      ),
      floatingActionButton: FabSpeedDial(
        animatedIcon: AnimatedIcons.menu_close,
        animatedIconTheme: IconThemeData(size: 22.0),
        backgroundColor: Colors.blue,
        foregroundColor: Colors.white,
        elevation: 8.0,
        shape: CircleBorder(),
        children: [
          IconButton(
            icon: Icon(Icons.add),
            onPressed: () {
              print('Add pressed');
            },
          ),
          IconButton(
            icon: Icon(Icons.edit),
            onPressed: () {
              print('Edit pressed');
            },
          ),
          IconButton(
            icon: Icon(Icons.delete),
            onPressed: () {
              print('Delete pressed');
            },
          ),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!