扑。将一个 Draggable 项目拖动到另一个 Draggable 项目上

2024-03-05

我有下面的板。有一个覆盖层(Stack)2 x 10 个小部件,一些透明的小部件是DragTargets在它们上面,有相同宽度和高度的Draggable. The Draggable那些是包含图像的。

我面临的问题是onWillAccept and onAccept当我拖动上面的方法时,不会调用下面的方法。我猜是因为有小部件覆盖了它们。

我已经切换了小部件,有DragTargets覆盖Draggable但现在我无法拖动它们,因为它们位于其他小部件下方。

所有拖放的示例都是从一个位置拖动一个项目并将其放置在另一个位置上,一个可拖动的,一个拖动目标。我需要一个小部件(或屏幕上的区域)既可拖动又可作为拖动目标。我怎样才能做到这一点?

这是布局

          Align(
            child: Container(
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage("images/user_board.jpg"),
                  alignment: Alignment.bottomCenter,
                ),
              ),
              height: _userBoardH,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Container(
                      height: _tileH,
                      child: Stack(children: <Widget>[
                        Row(
                          children: _buildSlots(ScreenBoard.FIRST_ROW),
                        ),
                        Row(
                          children: _buildTiles(ScreenBoard.FIRST_ROW),
                        ),
                      ])),
                  Container(
                      height: _tileH,
                      child: Stack(children: <Widget>[
                        Row(
                          children: _buildSlots(ScreenBoard.SECOND_ROW),
                        ),
                        Row(
                          children: _buildTiles(ScreenBoard.SECOND_ROW),
                        ),
                      ])),
                ],
              ),
            ),
            alignment: Alignment.bottomCenter,
          ),

Cheers.

EDIT

按照帕特里克的建议解决了这个问题。这是解决方案:

Widget _buildTile(Tile widget) {
  return DragTarget<Map>(
    builder: (context, candidateData, rejectedData) {
      return Container(
        child: Draggable<Map>(
          child: _getTile(widget),
          feedback: _getTile(widget),
          childWhenDragging: Container(
            width: widget._dimenW,
            height: widget._dimenH,
          ),
          data: {
            Tile.DATA_TILE_ROW_TYPE: widget._rowType,
            Tile.DATA_TILE_ROW_POS: widget._rowPosition,
            Tile.DATA_TILE_ID: widget._tileId,
          },
        ),
      );
    },
    onWillAccept: (data) {
      UDebug.log("onWillAccept");
      return false;
    },
    onAccept: (data) {
      UDebug.log("onAccept");
    },
  );
}

将其包装在 Container() 小部件中,并将图像放入 BoxDecoration() 中,并使用 child: 属性来保存 Draggable()。

这不会阻碍您的指针事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扑。将一个 Draggable 项目拖动到另一个 Draggable 项目上 的相关文章

  • 在列表视图中颤动网格视图

    我想构建像 Ios 应用商店这样的设计 如下图所示 我想要实现的是有 5 个顶级类别 每个类别都有显示图像的网格 我这样尝试过 return new Scaffold backgroundColor Colors white appBar
  • VS Code 和 Flutter/Dart,小部件自动完成功能不起作用

    我正在使用一些教程来学习 Flutter 而我现在正在学习的教程则使用 VSCode 事实上 与 Android Studio 相比 我更喜欢它 因为它不会使我的 Macbook 过热 到目前为止 我唯一感到沮丧的是 有很多次自动完成功能停
  • 在透明背景的 flutter 上播放视频

    我在 Blender 上做了一些复杂的 3D 动画 我想在 flutter 上播放它们 问题是 当我将动画导出到视频并将其放在我的 flutter 应用程序上时 透明背景消失了 我使用 video player 在 flutter 上播放视
  • 如何在 Flutter 中创建网络图像列表

    我使用 Carousel Pro 包在屏幕上实现轮播 在这个 Carousel 类中它需要一个图像列表 Carousel 类的语法是 Carousel images NetworkImage https cdn images 1 mediu
  • 导入的包“路径”不是导入包的依赖项

    我刚刚升级了我的软件包 现在我开始看到一条警告 是什么原因造成的 您的一个或部分包裹 很可能是path provider https pub dev packages path provider had path https pub dev
  • 是否可以在 Flutter 中创建自定义快速设置图块?

    我搜索了 Flutter 文档并用谷歌搜索了这个 但结果为零 我正在开发我的第一个 Android Flutter 应用程序 我想为其创建一个自定义的快速设置图块 我的目标是牛轧糖及以上 我知道这在 Java 和 Kotlin 中是可能的
  • android studio 中没有flutter SDK

    我正在尝试跑步Flutter在 Android studio 上 但我有一个解决此错误的问题 我正在使用所有东西的最新版本 例如 dart 和 flutter 或插件 Flutter 用户应该运行flutter packages get代替
  • 颤动中的弯曲导航栏

    目前 我在 flutter 中有一个库https pub dev packages curved navigation bar https pub dev packages curved navigation bar并已经在我的项目中实现了
  • iOS Flutter 与 Firebase:启动时 FlutterAppDelegate 中出现白屏和 SIGABRT

    现在在多个项目中 非常不一致的是 我在启动应用程序时出现白屏 并且 Xcode 显示错误 Thread 1 signal SIGABRT 在线上 objc class AppDelegate FlutterAppDelegate 这些都是i
  • flutter 检测 url 并显示预览

    我正在尝试制作一个类似于 wats app 的链接预览功能 它有两个部分 从文本字段检测 URL 显示该 URL 的预览 第 2 部分有很多插件可以显示预览 但我一直坚持第 1 部分 即如何检测和解析用户在文本字段中输入的 URL 还有一个
  • 如何在Flutter中实现Nested ListView?

    实现嵌套 ListView 或者换句话说 可以包含在可滚动父级中的 ListView Widget 的首选方法是什么 想象一个 报告 页面 其中一个部分是一个逐项列表 对于子 ListView 使用该参数 shrinkWrap true p
  • 我无法捕捉到 Flutter 上 Firebase Auth 的异常

    我正在尝试使用 flutter 上的 firebase auth 在我的应用程序上创建登录功能 我必须处理很多例外情况 但我根本无法捕获它们 这是我的代码 Future
  • 将多个参数发送到 Flutter 中的计算函数

    我试图在 Flutter 中使用计算功能 void blockPressHandler int row int col async Called when user clicks any block on the sudoku board
  • 将多个身份验证提供商链接到一个帐户

    我已经实现了 Facebook 和 Google 登录 但 FireBase 文档称 如果同一用户首先使用 Facebook 注册 然后尝试使用 Google 登录 使用相同的电子邮件 这将导致错误 所以我按照文档并尝试配置帐户关联 但我不
  • 如何设置 dart objectbox 并预填充本地数据库?

    我想用 Flutter 设置一个 ObjectBox 数据库 我想用值预先填充数据库文件 安装应用程序时 数据库文件将被复制并由应用程序使用 我希望能够继续提供架构迁移 是否可以 如何建立这种类型的架构 你有什么例子吗 SOLUTION 通
  • 类型不匹配:推断类型是 PluginRegistry?但 FlutterEngine 是预期的

    我想使用 Flutter Workmanager 我在 kt 中做了引用的配置 如下所示 package com example mybackprocess import be tramckrijte workmanager Workman
  • Flutter中如何在弹出屏幕后调用函数更新值?

    屏幕 1 显示带有添加按钮的项目列表 屏幕 2 用于将新项目添加到列表的表单 屏幕 2 gt gt 屏幕 1 在屏幕 2 中调用 navigator pop 时 如何在屏幕 1 中调用方法 setState 更新列表 谁能帮我吗 我不想再次
  • 使用 flutter 处理 Appcheck 时出错

    我想在 firebase 存储中上传文件 但经过多次研究后出现了 appcheck 错误 我发现我必须在 firebase 上激活 Appcheck 而且还要在我的应用程序上激活它 在 youtube 上的谷歌视频中 我看到我必须在构建我的
  • Flutter:BottomNavigationBar 在选项卡更改时重建页面

    我在 Flutter 中的 BottomNavigationBar 有问题 如果我更改选项卡 我想让我的页面保持活动状态 这是我的实现 底部导航 class Home extends StatefulWidget override Stat
  • 如何在 Flutter 中对 RaisingButton 的颜色进行动画处理?

    我有一个RaisedButton 我想要animate它的颜色来自green to red 反之亦然 每次用户单击它时 这怎么能做到呢 您可以使用AnimatedContainer https api flutter dev flutter

随机推荐