日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Flutter教程:Flutter 手勢

介紹

本文檔介紹了如何在Flutter中監(jiān)聽并響應手勢(點擊、拖動和縮放)。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、虛擬空間、營銷軟件、網(wǎng)站建設、興山網(wǎng)站維護、網(wǎng)站推廣。

Flutter中的手勢系統(tǒng)有兩個獨立的層。第一層有原始指針(pointer)事件,它描述了屏幕上指針(例如,觸摸,鼠標和觸控筆)的位置和移動。 第二層有手勢,描述由一個或多個指針移動組成的語義動作。

Pointers

指針(Pointer)代表用戶與設備屏幕交互的原始數(shù)據(jù)。有四種類型的指針事

  • PointerDownEvent 指針接觸到屏幕的特定位置
  • PointerMoveEvent 指針從屏幕上的一個位置移動到另一個位置
  • PointerUpEvent 指針停止接觸屏幕
  • PointerCancelEvent 指針的輸入事件不再針對此應用(事件取消)

在指針按下時,框架對您的應用程序執(zhí)行_命中測試_,以確定指針與屏幕相接的位置存在哪些widget。 指針按下事件(以及該指針的后續(xù)事件)然后被分發(fā)到由_命中測試_發(fā)現(xiàn)的最內部的widget。 從那里開始,這些事件會冒泡在widget樹中向上冒泡,這些事件會從最內部的widget被分發(fā)到到widget根的路徑上的所有小部件(譯者語:這和web中事件冒泡機制相似), 沒有機制取消或停止冒泡過程(譯者語:這和web不同,web中的時間冒泡是可以停止的)。

To listen to pointer events directly from the widgets layer, use a Listener widget. However, generally, consider using gestures (as discussed below) instead. 要直接從widget層監(jiān)聽指針事件,可以使用Listenerwidget。 但是,通常,請考慮使用手勢(如下所述)

手勢

手勢表示可以從多個單獨的指針事件(甚至可能是多個單獨的指針)識別的語義動作(例如,輕敲,拖動和縮放)。 完整的一個手勢可以分派多個事件,對應于手勢的生命周期(例如,拖動開始,拖動更新和拖動結束):

  • TaponTapDown 指針已經(jīng)在特定位置與屏幕接觸onTapUp 指針停止在特定位置與屏幕接觸onTap tap事件觸發(fā)onTapCancel 先前指針觸發(fā)的onTapDown不會在觸發(fā)tap事件
  • 雙擊onDoubleTap 用戶快速連續(xù)兩次在同一位置輕敲屏幕.
  • 長按onLongPress 指針在相同位置長時間保持與屏幕接觸
  • 垂直拖動onVerticalDragStart 指針已經(jīng)與屏幕接觸并可能開始垂直移動onVerticalDragUpdate 指針與屏幕接觸并已沿垂直方向移動.onVerticalDragEnd 先前與屏幕接觸并垂直移動的指針不再與屏幕接觸,并且在停止接觸屏幕時以特定速度移動
  • 水平拖動onHorizontalDragStart 指針已經(jīng)接觸到屏幕并可能開始水平移動onHorizontalDragUpdate 指針與屏幕接觸并已沿水平方向移動onHorizontalDragEnd 先前與屏幕接觸并水平移動的指針不再與屏幕接觸,并在停止接觸屏幕時以特定速度移動

要從widget層監(jiān)聽手勢,請使用 GestureDetector.

如果您使用的是Material Components,那么大多數(shù)widget已經(jīng)對tap或手勢做出了響應。 例如 IconButton和 FlatButton 響應presses(taps),ListView響應滑動事件觸發(fā)滾動。 如果您不使用這些widget,但想要在點擊時上出現(xiàn)“墨水飛濺”效果,可以使用InkWell。

手勢消歧

在屏幕上的指定位置,可能會有多個手勢檢測器。所有這些手勢檢測器在指針事件流經(jīng)過并嘗試識別特定手勢時監(jiān)聽指針事件流。 GestureDetector widget決定是哪種手勢。

當屏幕上給定指針有多個手勢識別器時,框架通過讓每個識別器加入一個“手勢競爭場”來確定用戶想要的手勢?!笆謩莞偁巿觥笔褂靡韵乱?guī)則確定哪個手勢勝出

  • 在任何時候,識別者都可以宣布失敗并離開“手勢競爭場”。如果在“競爭場”中只剩下一個識別器,那么該識別器就是贏家
  • 在任何時候,識別者都可以宣布勝利,這會導致勝利,并且所有剩下的識別器都會失敗

例如,在消除水平和垂直拖動的歧義時,兩個識別器在接收到指針向下事件時進入“手勢競爭場”。識別器觀察指針移動事件。 如果用戶將指針水平移動超過一定數(shù)量的邏輯像素,則水平識別器將聲明勝利,并且手勢將被解釋為水平拖拽。 類似地,如果用戶垂直移動超過一定數(shù)量的邏輯像素,垂直識別器將宣布勝利。

當只有水平(或垂直)拖動識別器時,“手勢競爭場”是有益的。在這種情況下,“手勢競爭場”將只有一個識別器,并且水平拖動將被立即識別,這意味著水平移動的第一個像素可以被視為拖動,用戶不需要等待進一步的手勢消歧。


當前標題:創(chuàng)新互聯(lián)Flutter教程:Flutter 手勢
文章路徑:http://www.5511xx.com/article/dhpojjh.html