Flutter開發LongPressDraggable、Draggable 的onDragEnd沒有被調用

在這里插入圖片描述

文章目錄

  • onDragEnd 什么時候執行?
  • onDragEnd 在拖動結束時沒有被調用的可能原因

onDragEnd 什么時候執行?

onDragEnd 回調函數在拖動結束時執行,但要注意,拖動結束有多種情況,不僅僅是松開手指觸發的。

onDragEnd 會在以下情況下執行:

用戶松開手指(Draggable 結束): 當用戶在拖動小部件時松開手指,onDragEnd 會被調用。

拖動到 DragTarget 區域(Drop 結束): 如果拖動的小部件被拖動到一個 DragTarget 區域并成功放置,也會觸發 onDragEnd。

拖動到不接受的 DragTarget 區域(Drop 結束): 如果拖動的小部件被拖動到一個不接受的 DragTarget 區域并且沒有放置,同樣會觸發 onDragEnd,但此時 details.wasAccepted 為 false。

請確保你的 onDragEnd 回調函數中包含了你期望的邏輯,同時檢查拖動的目標是否接受了拖動對象。如果 onDragEnd 在你的場景中沒有被調用,建議使用 onDragCompleted 進行調試,它會在拖動結束后,不論是否成功放置,都被調用。

LongPressDraggable(// ...onDragCompleted: () {print('Drag Completed');},// ...
);

通過在 onDragCompleted 中輸出調試信息,你可以更容易地理解拖動行為的流程。

onDragEnd 在拖動結束時沒有被調用的可能原因

如果 onDragEnd 在拖動結束時沒有被調用,有幾個可能的原因:

拖動對象沒有成功放置到接受的 DragTarget 區域: 如果拖動對象被拖動到 DragTarget 區域但未成功放置,onDragEnd 可能不會被調用。確保目標區域可以接受拖動對象并檢查 DragTarget 中的 onWillAccept 和 onAccept 方法。

DragTarget(onWillAccept: (data) {// 檢查是否接受拖動對象return true; // 或者根據具體邏輯返回 true 或 false},onAccept: (data) {// 處理接受的拖動數據},builder: (BuildContext context, List<dynamic> candidateData, List<dynamic> rejectedData) {// 構建 DragTarget 區域// ...},
)

在拖動期間發生錯誤: 如果在拖動對象被拖動時發生錯誤,可能會影響 onDragEnd 的觸發。確保沒有其他可能導致拖動問題的錯誤。

拖動對象被釋放到 DragTarget 區域之外: 如果拖動對象被拖到屏幕外部或其他不可見區域,onDragEnd 可能不會被調用。確保拖動對象在屏幕上可見的有效區域內。

onDragEnd 中的邏輯正確并且沒有被其他部分的代碼所影響。在你的 LongPressDraggable 中,確保 onDragEnd 沒有被其他 GestureDetector、InkWell 或其他與手勢相關的小部件所覆蓋或攔截。


結束語
Flutter是一個由Google開發的開源UI工具包,它可以讓您在不同平臺上創建高質量、美觀的應用程序,而無需編寫大量平臺特定的代碼。我將學習和深入研究Flutter的方方面面。從基礎知識到高級技巧,從UI設計到性能優化,歡飲關注一起討論學習,共同進入Flutter的精彩世界!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696302.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【國產MCU】-CH32V307-通用定時器(GPTM)-單脈沖模式

通用定時器(GPTM)-單脈沖模式 文章目錄 通用定時器(GPTM)-單脈沖模式1、單脈沖模式介紹2、驅動API介紹3、單脈沖使用實例本文將詳細介紹如何使用CH32V307通用定時器的單脈沖模式。 1、單脈沖模式介紹 單脈沖模式可以響應一個特定的事件,在一個延遲之后產生一個脈沖,延遲…

Seata 的 AT 模式

目錄 概述 Springcloud 整合 Seata 數據庫腳本 服務依賴 Springboot 配置 代碼改造 AT模式下的數據隔離 寫隔離 讀隔離 概述 Seata 的 AT 模式是 Seata 的默認模式&#xff0c;它的原理是依賴于數據庫事務&#xff0c;以數據庫事務保證本地事務分支特性&#xff0c;結合…

windows系統用VS環境開發linux程序之一

主要有兩種方法&#xff0c;一種是在windows中安裝linux子系統&#xff0c;即WSL&#xff0c;另一種是windows系統裝linux虛擬機。 這里先用虛擬機方法。參考文章&#xff1a; 用VS2015開發Linux程序詳細教程-配置篇_vs2015可以在linux安裝嗎-CSDN博客 這篇基本就夠了。不過…

nginx之web性能location優先級

4.2 event事件 events {worker_connections 65536; #設置單個工作進程的最大并發連接數use epoll;#使用epoll事件驅動&#xff0c;Nginx支持眾多的事件驅動&#xff0c;比如:select、poll、epoll&#xff0c;只能設置在events模塊中設置。accept_mutex on; #on為同一時刻一個…

設計模式之委派模式

文章目錄 前言正文一、生活中的例子二、Java代碼實現2.1 類設計2.2 代碼實現2.2.1 Employee2.2.2 ArchitectureDesignEmployer2.2.3 BackEmployer2.2.4 FrontEmployer2.2.5 Leader2.2.6 EmployeeStrongPointEnum2.2.7 Boss 2.3 測試2.3.1 Client2.3.2 測試結果 三、委派模式的優…

Docker Desktop 4.27.1 Windows 10 安裝 教程

Docker Desktop 4.27.1 Windows 10 安裝 版本要求windows 版本要求wsl 版本要求docker desktop 版本 安裝首先確保系統版本符合要求前提下安裝wsl安裝 Dockers Desktop安裝說明 安裝問題docker Desktop 無法正常啟動&#xff0c;提示wsl 相關信息wsl --install 執行輸出幫助日志…

Python 程序中查看 Python version

Python 程序中查看 Python version 1. Code2. OutputReferences 1. Code #!/usr/bin/env python3 # -*- coding:utf-8 -*-import platform import sysprint("\nplatform.python_version():") print(platform.python_version())print("\nsys.version:") pr…

springboot大學生體質測試管理系統源碼和論文

大學生體質測試管理系統提供給用戶一個簡單方便體質測試管理信息&#xff0c;通過留言區互動更方便。本系統采用了B/S體系的結構&#xff0c;使用了java技術以及MYSQL作為后臺數據庫進行開發。系統主要分為系統管理員、教師和用戶三個部分&#xff0c;系統管理員主要功能包括首…

圖像分類入門:使用Python和Keras實現卷積神經網絡

文章標題&#xff1a;圖像分類入門&#xff1a;使用Python和Keras實現卷積神經網絡 簡介 圖像分類是計算機視覺領域的一個重要任務&#xff0c;它涉及將圖像分成不同的類別或標簽。卷積神經網絡&#xff08;CNN&#xff09;是圖像分類任務中的一種常用模型&#xff0c;它能夠…

rust實戰系列十四:復合數據類型

復合數據類型可以在其他類型的基礎上形成更復雜的組合關系。 本章介紹tuple、struct、enum等幾種復合數據類型。數組留到第6章介紹。 2.3.1 tuple tuple指的是“元組”類型&#xff0c;它通過圓括號包含一組表達式構成。tuple內的元素沒 有名字。tuple是把幾個類型組合到一起的…

第三十九天| 62.不同路徑、63. 不同路徑 II

Leetcode 62.不同路徑 題目鏈接&#xff1a;62 不同路徑 題干&#xff1a;一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “…

c#之列表

// List<int> scoreList new List<int>();//創建空列表var scoreListnew List<int>();//匿名方式創建scoreList.Add(912);//插入數據scoreList.Add(45);scoreList.Add(415);scoreList.Add(452);scoreList.Add(4451);scoreList.Add(245);scoreList.Add(445);…

十六、多邊形填充和繪制

項目功能實現&#xff1a;對多邊形進行輪廓繪制和填充 按照之前的博文結構來&#xff0c;這里就不在贅述了 一、頭文件 mult-drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class Mult_Drawing { public:void mult_drawing(); };#pragma onc…

vue如何動態加載顯示本地圖片資源

在實際開發中&#xff0c;根據某一個變量動態展示圖片的情況有很多。實現方法分打包構建工具的差異而不同。 1、webpack的項目 require引入圖片資源 2、vite的項目 new URL(url,base).href 疑問解答&#xff1a;為什么vite項目不可以用require&#xff1f; 原因在于&#xf…

Elastic Stack--01--簡介、安裝

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 1. Elastic Stack 簡介為什么要學習ESDB-Engines搜索引擎類數據庫排名常年霸榜![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/051342a83f574c8c910cda…

微信小程序獨立分包與分包預下載

官網鏈接 獨立分包配置方法 獨立分包使用限制 獨立分包中不能依賴主包和其他分包中的內容&#xff0c;包括 js 文件、模板、wxss、自定義組件等&#xff1b;App 只能在主包內定義&#xff0c;獨立分包中不能定義 App&#xff0c;會造成無法預期的行為獨立分包中暫時不支持使用…

cocos creator3.x項目打包成aar 加入到已有的Android工程

Cocos crearor版本&#xff1a; 3.4.2 Android Studio Flamingo | 2022.2.1 Patch 2 1、配置構建安卓項目 2、 運行編譯無報錯 出現問題可嘗試修改Gradle版本 修改jdk版本 3、對libservice打包成aar 打包完后 再build/outputs找到aar 如果看不到Tasks模塊&#xff0c;在Fil…

sqlserver觸發器

在SQL Server中&#xff0c;觸發器是一種特殊的數據庫對象&#xff0c;它們會在表上執行特定的操作時自動觸發。觸發器可以用于在表上插入、更新或刪除數據時執行自定義的邏輯。觸發器通常用于實施數據完整性約束、審計和日志記錄等操作。 觸發器有三種主要類型&#xff1a; 插…

人機交互新研究:MIT開發了結合腦電和眼電的新式眼鏡,與機器狗交互

還記得之前的AI讀心術嗎&#xff1f;最近&#xff0c;「心想事成」的能力再次進化&#xff0c; ——人類可以通過自己的想法直接控制機器人了&#xff01; 來自麻省理工的研究人員發表了Ddog項目&#xff0c;通過自己開發的腦機接口&#xff08;BCI&#xff09;設備&#xff…

面試答疑03

1、登錄鑒權怎么做的&#xff1f;為什么采用jwt的方式&#xff1f;有什么好處&#xff1f; Java登錄鑒權常見的實現方式包括**CookieSession、HTTP Basic Authentication、ServletJDBC**等。 在Java的Web應用中&#xff0c;登錄鑒權是確認用戶身份的關鍵環節。一個常用的傳統…