Flutter拖拽操作插件flutter_easy_drag的使用

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

Flutter 拖拽操作插件 flutter_easy_drag 的使用

flutter_easy_drag 包为 Flutter 开发者提供了轻松实现任何小部件在应用程序中可拖拽的功能,提供了无缝且可定制的拖放体验。

特性

  • 轻松实现任何小部件的拖放。
  • 可通过多种选项自定义初始位置,如中心、顶中心、左中心、右中心、底中心、右上角、右下角、左上角、左下角或自定义坐标。
  • 可调整拖动速度以控制移动流畅度。
  • 简单直观的 API,易于集成。

示例

查看该包的实际效果。

![Preview GIF]

安装

要在 Flutter 项目中集成 flutter_easy_drag,请将包添加到 pubspec.yaml 文件中:

dependencies:
  flutter_easy_drag: ^latest_version

使用

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

// 在你的应用中使用
EasyDrag(
  height: 100,
  width: 100,
  dragSpeed: 3,
  initialPosition: InitialPosition.topCenter,
  child: Container(
    // 你的小部件在这里
  ),
)

自定义

  • height: 指定可拖拽小部件的高度。
  • width: 指定可拖拽小部件的宽度。
  • dragSpeed: 控制拖动时小部件移动的速度(默认值为 3)。
  • initialPosition: 设置小部件的初始位置。选项包括:
    • InitialPosition.center
    • InitialPosition.topCenter
    • InitialPosition.leftCenter
    • InitialPosition.rightCenter
    • InitialPosition.bottomCenter
    • InitialPosition.topRightCorner
    • InitialPosition.bottomRightCorner
    • InitialPosition.topLeftCorner
    • InitialPosition.bottomLeftCorner
    • InitialPosition.custom(left, top): 指定自定义坐标。

许可证: MIT

贡献

欢迎贡献此包!请查看仓库中的贡献指南。

反馈

您的反馈和建议非常宝贵!如果您有任何问题,请在 GitHub 上创建一个 issue。


完整示例

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

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

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

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

  final double height = 100.0;
  final double width = 100.0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Scaffold(
        body: SafeArea(
          child: Column(
            children: [
              // 使用 EasyDrag 小部件
              EasyDrag(
                height: height,
                width: width,
                dragSpeed: 3,
                initialPosition: InitialPosition.center,
                child: Container(
                  height: height,
                  width: width,
                  decoration: BoxDecoration(
                    color: Colors.red,
                    borderRadius: BorderRadius.circular(10),
                  ),
                ),
              ),
              // 其他小部件
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_easy_drag插件来实现拖拽操作的示例代码。这个插件使得在Flutter应用中实现拖拽功能变得更加简单。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_easy_drag: ^x.y.z  # 请替换为最新版本号

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

接下来,在你的Dart文件中,你可以使用flutter_easy_drag来实现拖拽功能。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Easy Drag Demo'),
        ),
        body: Center(
          child: EasyDrag(
            // 被拖拽的widget
            child: Container(
              width: 100,
              height: 100,
              color: Colors.blue,
              child: Center(
                child: Text(
                  'Drag Me',
                  style: TextStyle(color: Colors.white),
                ),
              ),
            ),
            // 拖拽开始时的回调
            onDragStarted: (details) {
              print('Drag Started: ${details.globalPosition}');
            },
            // 拖拽更新时的回调
            onDragUpdated: (details) {
              print('Drag Updated: ${details.globalPosition}');
            },
            // 拖拽结束时的回调
            onDragEnded: (details) {
              print('Drag Ended: ${details.primaryVelocity}');
            },
            // 是否允许拖拽超出父容器的边界
            boundary: Boundary.all,
            // 限制拖拽方向,例如只允许水平拖拽
            // dragDirection: DragDirection.horizontal,
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个可以拖拽的蓝色方块。EasyDrag widget包装了我们的目标widget(在这个例子中是一个Container),并提供了几个回调方法,可以在拖拽开始、更新和结束时执行特定的操作。

  • onDragStarted:在拖拽开始时调用,返回拖拽的详细信息。
  • onDragUpdated:在拖拽过程中持续调用,返回拖拽的详细信息。
  • onDragEnded:在拖拽结束时调用,返回拖拽的详细信息。

boundary属性控制拖拽是否可以在父容器的边界之外进行。dragDirection属性可以用来限制拖拽的方向,比如只允许水平或垂直拖拽。

这个示例展示了如何使用flutter_easy_drag插件实现基本的拖拽操作。根据你的需求,你可以进一步自定义和扩展这个基础示例。

回到顶部