国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android應用-Flutter實現Android拖動到垃圾桶刪除效果-Draggable和DragTarget的詳細講解

這篇具有很好參考價值的文章主要介紹了Android應用-Flutter實現Android拖動到垃圾桶刪除效果-Draggable和DragTarget的詳細講解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Android應用-Flutter實現Android拖動到垃圾桶刪除效果-Draggable和DragTarget的詳細講解,Flutter,flutter,Draggable,DragTarget,拖拽,刪除,拖拽移動,移動

Draggable介紹

Draggable是Flutter框架中的一個小部件,用于支持用戶通過手勢拖動一個子部件。它是基于手勢的一種方式,可以使用戶可以在屏幕上拖動指定的部件。以下是關于Draggable的一些詳細介紹:

構造函數

Draggable的構造函數

Draggable<T>({
  Key? key,
  required this.child,
  this.feedback,
  this.data,
  this.axis,
  this.childWhenDragging,
  this.feedbackOffset = Offset.zero,
  this.dragAnchor = DragAnchor.child,
  this.affinity,
  this.onDragStarted,
  this.onDragEnd,
  this.onDraggableCanceled,
  this.maxSimultaneousDrags,
  this.canDrag = true,
  this.gestureRecognizer,
  this.dragAnchorStrategy = DefaultDragAnchorStrategy,
})

參數說明

  • child (Widget): 被拖動的子部件。

  • feedback (Widget?): 拖動時顯示的反饋部件。如果為null,則使用child作為反饋部件。

  • data (T?): 拖動過程中傳遞給DragTarget的數據。

  • axis (Axis?): 限制拖動的軸向??梢允茿xis.horizontal(水平方向)或Axis.vertical(垂直方向)。

  • childWhenDragging (Widget?): 在拖動時替代child的部件。如果為null,則在拖動時顯示child。

  • feedbackOffset (Offset): 反饋部件相對于拖動手勢的偏移。

  • dragAnchor (DragAnchor): 控制拖動錨點的位置。可以是DragAnchor.child(默認值,錨點在child部件的中心)或DragAnchor.pointer(錨點在拖動手勢的位置)。

  • affinity (Axis?): 用于指定對齊到某個軸的情況,可以是Axis.horizontal或Axis.vertical。

  • onDragStarted (VoidCallback?): 拖動開始時的回調函數。

  • onDragEnd (DraggableDetailsCallback?): 拖動結束時的回調函數。

  • onDraggableCanceled (DraggableCanceledCallback?): 在拖動被取消時的回調函數。

  • maxSimultaneousDrags (int?): 同時拖動的最大數量。

  • canDrag (bool): 是否允許拖動。如果為false,Draggable將不響應拖動手勢。

  • gestureRecognizer (DragGestureRecognizer?): 用于自定義拖動手勢檢測的手勢識別器。

  • dragAnchorStrategy (DragAnchorStrategy): 用于控制拖動錨點的策略。

使用示例

Draggable<int>(
  data: 42,
  child: Container(
    width: 100,
    height: 100,
    color: Colors.blue,
    child: Center(
      child: Text("Drag me"),
    ),
  ),
  feedback: Container(
    width: 120,
    height: 120,
    color: Colors.blue.withOpacity(0.5),
    child: Center(
      child: Text("Dragging..."),
    ),
  ),
  onDragStarted: () {
    // 拖動開始時執(zhí)行的操作
    print("Drag started!");
  },
  onDragEnd: (details) {
    // 拖動結束時執(zhí)行的操作
    print("Drag ended!");
  },
);

在這個例子中,當用戶拖動包含文本"Drag me"的藍色容器時,onDragStarted回調被觸發(fā),打印"Drag started!“。在拖動結束時,onDragEnd回調被觸發(fā),打印"Drag ended!”。被拖動的數據是42,可以通過DragTarget接收并處理。

DragTarget 介紹

DragTarget 是 Flutter 框架中的一個小部件,用于接收拖動操作并處理拖動過程中傳遞的數據。它是與 Draggable 配合使用的一種方式,允許你指定拖動對象應該如何被接收和處理。

以下是關于 DragTarget 的詳細介紹:

構造函數

DragTarget<T>(
  {Key? key,
  required this.builder,
  this.onWillAccept,
  this.onAccept,
  this.onLeave,
  this.hitTestBehavior = HitTestBehavior.deferToChild,
  this.feedback,
  this.child,
})

參數說明

  • builder (Widget Function(BuildContext, List<T?>, List): 用于構建 DragTarget 的子部件。builder 接受三個參數,分別是 BuildContext、當前拖動的數據列表和之前已經接收的數據列表。

  • onWillAccept (bool Function(T)?): 在拖動對象進入 DragTarget 區(qū)域時調用,用于決定是否接受拖動對象。如果返回 true,則 onAccept 將被調用。

  • onAccept (void Function(T)?): 在拖動對象被釋放到 DragTarget 區(qū)域內時調用,用于處理接受的拖動數據。

  • onLeave (void Function(T)?): 在拖動對象離開 DragTarget 區(qū)域時調用。

  • hitTestBehavior (HitTestBehavior): 用于決定點擊測試的行為。默認值是 HitTestBehavior.deferToChild,表示點擊測試會被委托給子部件。

  • feedback (Widget?): 用于自定義拖動時的反饋部件。

  • child (Widget?): 用于放置在 DragTarget 區(qū)域內的子部件。

使用示例

DragTarget<int>(
  builder: (BuildContext context, List<int?> candidateData, List<dynamic> rejectedData) {
    return Container(
      width: 200,
      height: 200,
      color: Colors.grey,
      child: Center(
        child: Text("Drop here"),
      ),
    );
  },
  onWillAccept: (data) {
    // 在拖動對象進入 DragTarget 區(qū)域時調用
    // 返回 true 表示接受拖動對象
    return true;
  },
  onAccept: (data) {
    // 在拖動對象被釋放到 DragTarget 區(qū)域內時調用
    // 處理接受的拖動數據
    print("Accepted data: $data");
  },
  onLeave: (data) {
    // 在拖動對象離開 DragTarget 區(qū)域時調用
  },
)

在這個例子中,DragTarget 是一個大小為 200x200 的灰色容器,上面顯示著 “Drop here” 文本。當有拖動對象進入這個容器時,onWillAccept 將被調用,決定是否接受拖動對象。如果返回 true,則 onAccept 將在拖動對象被釋放時被調用,處理接受的拖動數據。onLeave 在拖動對象離開 DragTarget 區(qū)域時被調用。這種方式可以用來實現拖放交互,其中 DragTarget 接收并處理 Draggable 的數據。

DragTarget 如何接收Draggable傳遞過來的數據?

DragTarget 通過 onAccept 回調函數接收從 Draggable 拖動傳遞過來的數據。這個回調函數在拖動對象被釋放到 DragTarget 區(qū)域時調用。

以下是一個簡單的示例,演示了如何使用 Draggable 和 DragTarget 來傳遞和接收數據:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Draggable and DragTarget Example'),
        ),
        body: MyDraggableAndDragTarget(),
      ),
    );
  }
}

class MyDraggableAndDragTarget extends StatefulWidget {
  
  _MyDraggableAndDragTargetState createState() => _MyDraggableAndDragTargetState();
}

class _MyDraggableAndDragTargetState extends State<MyDraggableAndDragTarget> {
  String data = 'Initial Data';

  
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Draggable<String>(
          data: 'Dragged Data',
          child: Container(
            width: 100,
            height: 100,
            color: Colors.blue,
            child: Center(
              child: Text('Drag Me'),
            ),
          ),
          feedback: Container(
            width: 100,
            height: 100,
            color: Colors.blue.withOpacity(0.5),
            child: Center(
              child: Text('Dragging...'),
            ),
          ),
          childWhenDragging: Container(
            width: 100,
            height: 100,
            color: Colors.blue.withOpacity(0.5),
          ),
        ),
        SizedBox(height: 20),
        DragTarget<String>(
          builder: (BuildContext context, List<String?> candidateData, List<dynamic> rejectedData) {
            return Container(
              width: 150,
              height: 150,
              color: Colors.grey,
              child: Center(
                child: Text('Drop Here'),
              ),
            );
          },
          onWillAccept: (data) {
            // 當拖動對象進入 DragTarget 區(qū)域時調用
            // 返回 true 表示接受拖動對象
            return true;
          },
          onAccept: (data) {
            // 當拖動對象被釋放到 DragTarget 區(qū)域內時調用
            // 處理接受的拖動數據
            setState(() {
              this.data = data ?? 'No Data';
            });
          },
          onLeave: (data) {
            // 當拖動對象離開 DragTarget 區(qū)域時調用
          },
        ),
        SizedBox(height: 20),
        Text('Received Data: $data'),
      ],
    );
  }
}

在這個例子中,Draggable 包含一個文本框,你可以拖動它。DragTarget 是一個灰色容器,當你把文本框拖動到這個容器上時,它將接收拖動的數據,并將接收到的數據顯示在屏幕上。文章來源地址http://www.zghlxwxcb.cn/news/detail-761343.html


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

到了這里,關于Android應用-Flutter實現Android拖動到垃圾桶刪除效果-Draggable和DragTarget的詳細講解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【arduino】超聲波垃圾桶

    【arduino】超聲波垃圾桶

    ??專欄【Arduino】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【勛章】 大一同學小吉,歡迎并且感謝大家指出我的問題?? 目錄 ?效果 ?所需器材? ?連線圖片? ?程序代碼 ?代碼分析 ?引入所需的庫文件 ?定義引腳? ?定義變量并且初始化? ??程

    2024年02月12日
    瀏覽(23)
  • 智能垃圾分類垃圾桶(K210+stm32mp157)

    智能垃圾分類垃圾桶(K210+stm32mp157)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 有需要源碼參考的可以點贊在評論區(qū)留郵箱 K210識別垃圾 k210識別2 文章目錄 前言 一、垃圾分類識別+舵機控制(K210) 二、語音控制(K210+ld3320)(UART通信) 三、滿溢度距離傳感器數據獲?。⊿TM32MP157)

    2024年02月03日
    瀏覽(22)
  • 智能垃圾桶項目【課程設計】【全套開源】

    智能垃圾桶項目【課程設計】【全套開源】

    1.1 功能描述 當物體接近垃圾桶時,垃圾桶自動打開,并有\(zhòng)\\" 嘀\\\"的一聲;當遠離垃圾桶后,自動關閉; 當按下按鍵時,垃圾桶也可以自動打開,并有\(zhòng)\\" 嘀\\\"的一聲; 當感受到震動時,也自動打開,(同上) 垃圾桶開時,led1 燈開,led2 燈關;當垃圾桶關時,led1 燈關,led2 燈開

    2024年01月16日
    瀏覽(29)
  • C語言:void*概述(垃圾桶)

    ? 目錄 1. void*概述 2. 限制與注意事項 2.1 不能進行解引用 2.2 不能進行加減整數操作 3. 示例程序 4. 總結 ?void* 類型時,我們通常是在處理一種特殊的指針類型,它可以存儲任何數據類型的地址。在本文中,我們將深入探討 void* 的特性以及在實際編程中如何使用它。 void* 是

    2024年02月03日
    瀏覽(16)
  • Arduino智能語音識別分類垃圾桶

    Arduino智能語音識別分類垃圾桶

    ????該功能主要是通過ASRpro語音識別模塊來實現,結合舵機部分,通過天問block編程,以達到用戶輸入語音指令, 通過 正確 識別后 控制舵機打開相應垃圾桶蓋子, 以 實現垃圾分類(可回收垃圾、其他垃圾、廚余垃圾、有害垃圾)。 該功能是 利用Arduino Uno開發(fā)板 結合 紅外

    2024年02月05日
    瀏覽(24)
  • 智能垃圾桶丨悅享便捷生活

    智能垃圾桶丨悅享便捷生活

    ? ? ? ?垃圾桶是人們日常生活所必不可少的必需品,它讓生活中所產生的垃圾有了一個正確的存放地方。隨著生產技術的迅速發(fā)展,垃圾桶也得以更新?lián)Q代。由最初的簡單式的圓筒式垃圾桶,到現在出現的感應式垃圾桶、智能語音控制垃圾桶,垃圾桶也變得越來越智能,讓

    2024年02月07日
    瀏覽(23)
  • 機器人制作開源方案 | 智能垃圾桶

    機器人制作開源方案 | 智能垃圾桶

    ? ? ? ?智能垃圾桶是一種利用物聯(lián)網技術和智能感知能力的智能設備,旨在提高垃圾分類和處理的效率。通常具備以下特點和功能: ① 智能感知:智能垃圾桶配備各種傳感器,如壓力傳感器、紅外線傳感器等,可以實時感知垃圾桶內垃圾的填充情況和類型。 ② 垃圾分類:

    2024年02月16日
    瀏覽(25)
  • HDFS中的Trash垃圾桶回收機制

    HDFS中的Trash垃圾桶回收機制

    回收站(垃圾桶)是windows操作系統(tǒng)里的一個系統(tǒng)文件夾,主要用來存放用戶歷史刪除的文檔文件資料,存放在回收站的文件可以恢復 回收站的功能給了我們一劑“后悔藥”?;厥照颈4媪藙h除的文件,文件夾,圖片等。這些項目將一直保留在回收站中,直到清空回收站 HDF

    2024年02月13日
    瀏覽(28)
  • 基于STM32的智能語音垃圾桶設計

    基于STM32的智能語音垃圾桶設計

    一. 系統(tǒng)設計及框圖: 本設計整體功能如下: 1. 超聲波感應到有人靠近時語音提示“垃圾放置請分類”。 2. 檢測垃圾筒時是否滿,當滿時語音提示“垃圾桶已滿”。 3. 光傳感器檢測,指示燈指示。 4. 語音識別不同的垃圾類型。 二. 離線語音模塊的設計: 離線語音模塊SU-0

    2024年02月01日
    瀏覽(16)
  • 32、基于51單片機紅外智能垃圾桶系統(tǒng)設計

    32、基于51單片機紅外智能垃圾桶系統(tǒng)設計

    隨著現代化進程的日益推進,科技越來越發(fā)達,人們的生活水平也提高了,城市化程度越來越高,與此同時也帶了許多問題,生活垃圾越來越多垃圾設施卻不夠完善。無論是在公共場合還是家庭廚房的垃圾大都是沒有蓋或者有蓋但需要人用手打開的,比如夏天的家庭廚房沒有

    2023年04月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包