Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

这篇具有很好参考价值的文章主要介绍了Flutter:功能型组件(3)- 拖拽组件、缩放平移组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拖拽组件

拖拽组件包含 DraggableLongPressDraggableDragTarget

DraggableLongPressDraggable 为可拖拽的组件,LongPressDraggable 继承自Draggable,因此用法和 Draggable 完全一样,唯一的区别就是 LongPressDraggable 触发拖动的方式是长按,而 Draggable 触发拖动的方式是按下。

DragTarget 为拖拽组件的目的地组件。

Draggable

Draggable(
   // axis: Axis.vertical,     // 默认是可以随意拖动,可以通过axis属性设置只允许横向(纵向)拖动
   // 拖拽时显示的组件
   feedback: Container(
     height: 100,
     width: 100,
     color: Colors.blue,
   ),
   // 正常显示的组件
   child: Container(
     height: 100,
     width: 100,
     color: Colors.red,
   ),
   onDragStarted: () {
     print("开始拖动");
   },
   onDragEnd: (DraggableDetails details) {
     print("拖动完成:$details");
   },
   onDraggableCanceled: (Velocity velocity, Offset offset) {
     print("未拖动到目标位置,结束位置是:($velocity,$offset)");
   },
   onDragCompleted: () {
     print("拖动到目标位置");
   });

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

DragTarget

DragTarget就像他的名字一样,指定一个目的地,Draggable组件可以拖动到此控件

class _YcHomeBodyState extends State<YcHomeBody> {
  Color _color = Colors.yellow;
  Color _color1 = Colors.red;
  Color _color2 = Colors.transparent;
  
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Draggable<Color>(
            data: _color,
            feedback: Container(
              width: 100,
              height: 100,
              color: _color.withOpacity(0.5),
            ),
            childWhenDragging: Container(
              width: 100,
              height: 100,
              color: Colors.grey,
            ),
            child: Container(
              width: 100,
              height: 100,
              color: _color,
            ),
          ),
          const SizedBox(height: 50),
          DragTarget<Color>(
            onWillAccept: (color) => true,
            onAccept: (color) {
              setState(() {
                _color2 = color;
                _color = _color1;
                _color1 = color;
              });
            },
            onLeave: (color) {},
            builder: (context, candidateData, rejectedData) {
              return Container(
                width: 100,
                height: 100,
                color: _color1,
              );
            },
          ),
        ],
      ),
    );
  }
}

DragTarget组件中有4个onWillAcceptonAcceptonLeavebuilder。其中,builder用于构建DragTarget的UI,另外3个用于处理拖拽操作。
candidateData参数表示当前拖拽过程中,DragTarget接受拖拽数据的候选数据。如果onWillAccept返回true,则candidateData就会被传递给onAccept函数

rejectedData参数表示当前拖拽过程中,DragTarget拒绝接受拖拽数据的数据。如果onWillAccept返回false,则rejectedData就会被传递给builder函数,用于构建拒绝接受拖拽数据的UI。

当拖拽对象从 DragTarget 区域内移动到 DragTarget 区域外时,onLeave 回调函数会被调用。
Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

缩放平移组件

Flutter中的InteractiveViewer是一个可交互的小部件,它允许用户在屏幕上缩放、平移和旋转其子小部件。它可以用于显示大型图像、地图、PDF文档等。

Center(
        child: InteractiveViewer(
      boundaryMargin: const EdgeInsets.all(20), // 边界的空白区域
      minScale: 0.5, // 最小缩放
      maxScale: 2.0, // 最大缩放
      onInteractionStart: (details) {
        print('开始交互!');
      },
      onInteractionEnd: (details) {
        print('结束交互');
      },
      child: Image.network(
          "https://scpic.chinaz.net/files/default/imgs/2022-10-20/0a7de58e808d2f04.jpg"),
    ));

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件文章来源地址https://www.toymoban.com/news/detail-473421.html

到了这里,关于Flutter:功能型组件(3)- 拖拽组件、缩放平移组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目实现图片缩放与拖拽功能

    在项目开发中遇到一个需求: 1:用鼠标滚轮可对图片进行缩放处理 2:点击按钮可对图片进行缩放处理 3:可对图片进行拖拽处理 我在开发中通过自己实现与百度查看优秀的铁子进行了两种类型的使用 源码: 效果: 源码: 效果:@韩桑

    2024年02月12日
    浏览(48)
  • 微信小程序中的拖拽和缩放图片功能

    在现代的移动应用开发中,拖拽和缩放功能变得越来越重要。它们不仅使应用程序更具交互性,还为用户提供了更直观、更高效的使用体验。微信小程序作为一个流行的开发平台,也提供了这样的功能。以下是在微信小程序中实现拖拽和缩放图片的步骤和注意事项。 1.设置图

    2024年03月14日
    浏览(50)
  • Flutter 缩放动画组件封装与使用

    在 Flutter 中,动画是为了提升用户体验而不可或缺的一部分。在应用程序中,缩放动画是常用的一种交互效果,可以使界面元素在用户交互时具有生动感。为了更好地组织代码和提高复用性,我们可以封装一个缩放动画组件,以下是一个简单的封装示例: 在使用缩放动画组件

    2024年01月19日
    浏览(42)
  • Flutter 全能型选手GetX —— 状态管理

    使用篇 简介 依赖管理 路由管理 状态管理 主题配置 多语言配置 离线缓存 网络请求 原理篇 Flutter 从源码看Getx的依赖原理 Obx:响应式状态管理,当数据源变化时,将自动执行刷新组件的方法 GetX:响应式状态管理,当数据源变化时,将自动执行刷新组件的方法 GetBuilder:简单

    2024年02月02日
    浏览(49)
  • GLSL——旋转、平移和缩放

    hello 兄弟们,好久不见撒,我又回来啦!,今天主要讲解如何在顶点着色器中进行旋转、平移和缩放,涉及到矩阵和向量方面的知识哦,忘记的可以翻一下高中数学啦,在讲之前,先回顾一下矩阵和向量点积的知识,矩阵点乘向量,等于矩阵的每一行分别和向量相乘的和,如

    2024年02月16日
    浏览(44)
  • 【OpenCV】图像变换(缩放、平移、旋转、仿射)

    图像变换是指通过对图像进行缩放、平移、旋转、仿射、透视等变换来改变图像的形状和大小。在本篇博客中,我们将详细介绍OpenCV中的图像变换函数,并提供示例代码以帮助读者更好地理解这些函数的使用方法。 缩放变换是指通过改变图像的大小来改变图像的形状。在Op

    2024年02月07日
    浏览(61)
  • Matlab图像的平移,旋转,缩放,裁剪

    %%------------------------Matlab图像的平移,旋转,缩放,裁剪------------------------------- %-------------------头文件----------------------------- clc ; %清屏幕 clear ; %删除所有的变量 close all ; %将所有打开的图片关掉 %--------------------图像平移 imtranslate-------------------------- A = imread(\\\'1.jpg\\\') ; subplot(

    2024年02月04日
    浏览(45)
  • cesium 3DTileset的平移、旋转、缩放

    加载模型 平移和修改高度 方法一:

    2024年02月12日
    浏览(41)
  • 二维坐标基本变换(平移、旋转、缩放、镜像、阵列)

    诸如图像、模型等的基本变换,实际上都是点坐标的变换,通过矩阵,可以非常方便的达到这个目的。在下文仅介绍二维坐标变换原理。 首先,定义点类如下: 注意,为了形式统一,变换矩阵应统一为3*3阶,同理,对于三维坐标变换矩阵应是4*4阶。关于矩阵的表示,实际上

    2024年02月04日
    浏览(79)
  • 记录--Vue3问题:如何实现组件拖拽实时预览功能?

    实现一个CMS内容管理系统,在后台进行内容编辑,在官网更新展示内容。 关于后台的编辑功能,大致分为两部分: 组件拖拽预览 、 组件内容编辑实时预览 。 对于组件拖拽预览,用户可以在含有各种功能组件的列表中,选择需要的组件进行拖拽。将组件拖拽到预览画布中后

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包