Flutter可拖拽按钮面板插件draggable_button_panel的使用

Flutter可拖拽按钮面板插件draggable_button_panel的使用

描述

DraggableButtonPanel 是一个可以展示一个带有按钮的面板的部件。当点击按钮时,会触发一个动画,显示包含选项列表的侧边栏。

面板最初是关闭状态,并且具有较低的透明度。当按钮被点击时,面板会以淡入动画形式打开。面板的位置根据按钮在屏幕上的初始位置来决定,可以在左边或右边显示。

面板包含一组用户自定义的图标选项,这些图标水平排列在面板内。当选择某个选项时,可以触发相应的动作。

面板和按钮在颜色、大小和透明度方面都是可定制的。可以通过 optionsbuttonSizepanelColorbuttonColorcollapseOpacity 等属性来自定义 DraggableButtonPanel 的外观和行为。

DraggableButtonPanel 使用了 Flutter 中的一些特性,如 StatefulWidgetAnimationControllerAnimatedOpacityStackPositioned 来管理面板的状态、执行动画并正确地排列屏幕上的元素。

总结来说,DraggableButtonPanel 是一个方便的部件,用于在 Flutter 应用程序中显示可拖动的按钮和选项面板。

短演示

安装

要使用这个包,你需要在你的 pubspec.yaml 文件中添加 draggable_button_panel 作为依赖项。你可以从 pub.dev 下载它。

  1. 打开你的 Flutter 项目的 pubspec.yaml 文件。
  2. dependencies 部分下添加以下行:
    draggable_button_panel: ^1.0.1-dev.1
    
  3. 在终端运行以下命令:
    flutter pub get
    
  4. 通过在 Dart 文件中添加以下导入语句来引入该包:
    import 'package:draggable_button_panel/draggable_button_panel.dart';
    

使用

使用 DraggableButtonPanel 只需简单地导入并将其用于你的部件。你可以自定义按钮、颜色、大小和面板的位置。

在使用 DraggableButtonPanel 时,建议使用 GlobalKey 来保持部件的位置,即使父部件重建也是如此。

你还可以获取 currentStatetop 位置,以便根据应用程序的需求更新面板的位置。

以下是一个示例代码:

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

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> {
  final GlobalKey<DraggableButtonPanelState> _draggableButtonPanelKey =
      GlobalKey<DraggableButtonPanelState>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Draggable Button Panel Example')),
      body: Center(
        child: DraggableButtonPanel(
          key: _draggableButtonPanelKey,
          children: [
            IconButton(
              icon: Icon(Icons.favorite),
              onPressed: () {},
            ),
            IconButton(
              icon: Icon(Icons.access_alarm),
              onPressed: () {},
            ),
          ],
          top: _draggableButtonPanelKey.currentState?.top ?? 50,
          left: 10,
          buttonSize: 55,
          panelColor: Colors.white,
          buttonColor: Colors.blue,
          collapseOpacity: 0.8,
        ),
      ),
    );
  }
}

更多关于Flutter可拖拽按钮面板插件draggable_button_panel的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter可拖拽按钮面板插件draggable_button_panel的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


draggable_button_panel 是一个用于 Flutter 的插件,它允许你创建一个可以拖拽的按钮面板。这个插件非常适合在应用中添加一个可移动的操作面板,用户可以通过拖拽来改变面板的位置。

安装

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

dependencies:
  flutter:
    sdk: flutter
  draggable_button_panel: ^1.0.0  # 请使用最新的版本号

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

基本用法

以下是一个简单的示例,展示了如何使用 draggable_button_panel 插件创建一个可拖拽的按钮面板:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Draggable Button Panel Example'),
        ),
        body: Center(
          child: DraggableButtonPanel(
            // 配置拖拽面板的属性
            panelSize: Size(100, 100),
            child: Icon(Icons.touch_app, size: 50, color: Colors.white),
            onTap: () {
              print('Button Panel Tapped!');
            },
            // 其他可选配置
            backgroundColor: Colors.blue,
            borderRadius: BorderRadius.circular(50),
            shadowColor: Colors.black.withOpacity(0.5),
            elevation: 5,
          ),
        ),
      ),
    );
  }
}

参数说明

  • panelSize: 面板的尺寸,类型为 Size,用于设置面板的宽度和高度。
  • child: 面板中显示的内容,通常是一个 Widget,比如 IconText
  • onTap: 当面板被点击时触发的回调函数。
  • backgroundColor: 面板的背景颜色,类型为 Color
  • borderRadius: 面板的圆角半径,类型为 BorderRadius
  • shadowColor: 面板的阴影颜色,类型为 Color
  • elevation: 面板的阴影高度,类型为 double

高级用法

你可以通过 DraggableButtonPanel 的更多参数来自定义面板的行为和外观。例如,你可以设置面板的初始位置、限制拖拽的范围、或者添加更多的交互逻辑。

DraggableButtonPanel(
  panelSize: Size(100, 100),
  initialPosition: Offset(200, 200), // 设置初始位置
  boundaryMargin: EdgeInsets.all(20), // 设置拖拽边界
  child: Icon(Icons.touch_app, size: 50, color: Colors.white),
  onTap: () {
    print('Button Panel Tapped!');
  },
  backgroundColor: Colors.blue,
  borderRadius: BorderRadius.circular(50),
  shadowColor: Colors.black.withOpacity(0.5),
  elevation: 5,
),
回到顶部