DragTarget onWillAccept 和 onAccept 未触发

2024-05-03

我从 Flutter 开始,无法使用拖放功能。我遵循了文档,但不知道我做错了什么。 此示例应用程序显示三个正方形,蓝色是可拖动的。其他的都设置了 DragTarget,一个在方块内,一个在方块外。当我拖动蓝色方块时,它会打印拖动开始的信息,但在拖动目标上拖放时没有打印信息。 这是代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.red,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Container(
          constraints: BoxConstraints.expand(),
          color: Colors.grey[900],
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Container(
                width: 100,
                height: 100,
                color: Colors.red,
                child: DragTarget(
                  onWillAccept: (d) => true,
                  onAccept: (d) => print("ACCEPT 1!"),
                  onLeave: (d) => print("LEAVE 1!"),
                  builder: (a,data,c) {
                    print(data);
                    return Center();
                  },
                ),
              ),
              DragTarget(
                onWillAccept: (d){return true;},
                onAccept:(d) => print("ACCEPT 2!"),
                onLeave: (d) => print("LEAVE 2!"),
                builder: (context, candidateData, rejectedData){
                  return Container(
                    width: 150,
                    height: 150,
                    color: Colors.purple
                  );
                }
              ),
              Draggable(
                data: ["SOME DATA"],
                onDragStarted: () => print("DRAG START!"),
                onDragCompleted: () => print("DRAG COMPLETED!"),
                onDragEnd: (details) => print("DRAG ENDED!"),
                onDraggableCanceled: (data, data2) => print("DRAG CANCELLED!"),
                feedback: SizedBox(
                  width: 100,
                  height: 100,
                  child: Container(
                    margin: EdgeInsets.all(10),
                    color: Colors.green[800],
                  ),
                ),
                child: SizedBox(
                  width: 100,
                  height: 100,
                  child: Container(
                    margin: EdgeInsets.all(10),
                    color: Colors.blue[800],
                  ),
                ),
              ),
            ],
          )
        ),
      )
    );
  }
}

显然,如果要传递数据,Draggable 和 DragTarget 需要指定通用类型,否则 onAccept 和 onWillAccept 将不会被触发。

例如,如果您想将数据作为 int 传递,则使用Draggable<int> and DragTarget<int>— 这也适用于 onAccept 和 onWillAccept,它们需要接受 int 作为参数。

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

DragTarget onWillAccept 和 onAccept 未触发 的相关文章

随机推荐

  • 哪种 ZeroMQ 模式最适合异步套接字对?

    我有一个服务器 在亚马逊上运行 和一个连接到它的客户端 建立连接后 客户端和服务器仅相互通信并发送消息 e g 1 Client gt Server 2 Client gt Server 3 Client lt Server 4 Clien
  • Android:向系统添加自定义字体

    我知道如何在应用程序中使用自定义字体 但我想做的是在系统范围内添加自定义字体 就像在 Windows 上添加新字体一样 如果没有官方的方法 我应该阅读android源代码的哪个模块 我必须更改 android 源代码并构建它以支持自定义字体
  • 运行添加迁移时无法加载程序集 Microsoft.EntityFrameworkCore.Design

    我使用以下 csproj 创建了一个类库项目
  • 如何将 JSON 响应映射到 Angular 4 中的模型

    我已经尝试了很多 但无法将端点响应映射到我的模型 我正在使用 HttpClient 和 Angular4 我从服务中获取了数据 但它没有正确映射到我的模型类 我有以下 JSON 服务正在返回 result id 1 type User co
  • Android 中 Activity 之间的对象共享

    您好 我有一个关于在整个应用程序中传递对象的问题 假设我想在整个应用程序中拥有一个大的自定义对象 该对象将被多个活动和服务使用 我一开始做的就是这样的 首先 我创建了一个 Application 类并定义了一个单例对象 public cla
  • 代码签名身份 <名称> 与任何有效的、未过期的代码签名证书不匹配

    我希望有人能帮我解决这个令人抓狂的问题 我和我的朋友正在开发一个 mac 商店应用程序 托管在 github 上 一个月前 我们使用他的开发中心帐户从他的机器上发布了该应用程序 我最近将源代码从 github 拉到我的机器上 以进行更新 但
  • 使用 php5-geoip 和 Maxmind 数据库获取 IPv6 支持

    我按照这些相同的步骤进行了 geoip 设置 http php net manual en geoip setup php http php net manual en geoip setup php wget http geolite m
  • Spring 3.1 MVC - 表单处理工作流程最佳实践

    目前我正在尝试了解 Spring MVC 3 1 中表单提交 验证 错误处理的正确工作流程 不 我有一些问题 保留表单错误 通过重定向绑定模型的正确方法是什么 是否有内置方法 我还没有找到 我知道我可以使用 Spring 表单标签和 JSR
  • 选择给定日期范围内的所有月份,包括值为 0 的月份

    我正在尝试编写一个 MySQL 查询来获取给定日期之间所有月份的每月平均值 我的想法是这样的 查询 类似 SELECT AVG value1 as avg value 1 AVG value2 as avg value 2 MONTH sa
  • JavaScript“可写”属性描述符如何工作?

    为什么 JavaScript 可写 属性描述符不禁止任何属性更改 例如 var TheDarkKnight Object create Superhero name value Batman writable false TheDarkKn
  • ngOnChange 不存储 previousValue 属性

    Angular2 RC4 angularfire2 2 0 0 beta 2 在我的子组件中我无法获取changes posX previousValue存储任何东西 父级 html 的片段 inside ngfor loop posX c
  • 将图像从 JQuery 上传到 Node JS

    我需要从我的网站上传图像文件HTML页 但是 我不会使用form标签 因为还有其他form稍后将用于将数据传递到服务器的字段 文本字段 复选框等 我的后端在Node JS 我想要的只是从Node Js结尾 我怎样才能做到这一点 HTML d
  • 使用 OpenCV 查找重叠/复杂的圆

    我想计算红圈半径 图2 我在使用 OpenCV 的 HoughCircles 找到这些圆圈时遇到了麻烦 如图所示 2 我只能使用 HoughCircles 找到中心以黑色显示的小圆圈 original fig 2 由于我知道红色圆圈的中心
  • 如何使用单元格内的十六进制颜色值突出显示单元格?

    我有一个符号和匹配的十六进制颜色的电子表格 我想用单元格内的十六进制颜色填充单元格本身 或其旁边的单元格 我读过一些有关 条件格式 的内容 我认为这就是实现的方法 我怎样才能达到我想要的结果 条件格式无法实现所有颜色 假设 Row1 包含数
  • 未找到 EOF 标记 - 如何在 PyPDF 和 PyPDF2 中修复?

    我正在尝试使用 Python 将几个 PDF 文件合并为一个 PDF 文件 我已经尝试过 PyPDF 和 PyPDF2 在某些文件上 它们都抛出相同的错误 PdfReadError 未找到 EOF 标记 这是我的代码 page files
  • 如何通过谓词将序列分成两部分?

    如何通过谓词将序列拆分为两个列表 替代方案 我可以使用filter and filterNot 或者编写我自己的方法 但是没有更好的更通用 内置 方法吗 通过使用partition方法 scala gt List 1 2 3 4 parti
  • 为什么 ruby​​ 方法没有词法作用域?

    例如 def test a a is for apple def inner method a something this will refer to a different a end inner method puts a end 这
  • 将 JSON 数据从服务发送到 Android 中的 UI

    要求是 我有一个后台服务 在该服务中我正在执行 REST 调用来获取 JSON 数据 我想将 JSON 数据发送到 UI 并更新内容 我可以使用的一种方法是将整个 JSON 字符串存储在 SharedPreferences 中并在 UI 中
  • 使用R中的XLSX包在Excel中打印data.frame时出错

    数据框是可见的 没有任何错误 但是 当使用 XLSX 包的 write xlsx 函数打印相同内容时 会出现错误 Error in jcall cell V setCellValue value method setCellValue wi
  • DragTarget onWillAccept 和 onAccept 未触发

    我从 Flutter 开始 无法使用拖放功能 我遵循了文档 但不知道我做错了什么 此示例应用程序显示三个正方形 蓝色是可拖动的 其他的都设置了 DragTarget 一个在方块内 一个在方块外 当我拖动蓝色方块时 它会打印拖动开始的信息 但