欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter數(shù)據(jù)交互,flutter數(shù)據(jù)共享

Flutter 之 交互

手勢操作在 Flutter 中分為兩類:

成都創(chuàng)新互聯(lián)主打移動網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、申請域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計,我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

第一類是原始的指針事件(Pointer Event),即原生開發(fā)中常見的觸摸事件,表示屏幕上觸摸(或鼠標(biāo)、手寫筆)行為觸發(fā)的位移行為;

第二類則是手勢識別(Gesture Detector),表示多個原始指針事件的組合操作,如點(diǎn)擊、雙擊、長按等,是指針事件的語義化封裝。

指針事件表示用戶交互的原始觸摸數(shù)據(jù),如手指接觸屏幕 PointerDownEvent、手指在屏幕上移動 PointerMoveEvent、手指抬起 PointerUpEvent,以及觸摸取消 PointerCancelEvent。在手指接觸屏幕,觸摸事件發(fā)起時,F(xiàn)lutter 會確定手指與屏幕發(fā)生接觸的位置上究竟有哪些組件,并將觸摸事件交給最內(nèi)層的組件去響應(yīng)。事件會從這個最內(nèi)層的組件開始,沿著組件樹向根節(jié)點(diǎn)向上冒泡分發(fā)。通過 hitTestBehavior 去調(diào)整組件在命中測試期內(nèi)應(yīng)該如何表現(xiàn),比如把觸摸事件交給子組件,或者交給其視圖層級之下的組件去響應(yīng)。關(guān)于組件層面的原始指針事件的監(jiān)聽,F(xiàn)lutter 提供了 Listener Widget,可以監(jiān)聽其子 Widget 的原始指針事件。

Listener(

child: Container(

color: Colors.black,

width: 300,

height: 300,

),

onPointerDown: (event) = print("down $event"),// 手勢按下回調(diào)

onPointerMove:? (event) = print("move $event"),// 手勢移動回調(diào)

onPointerUp:? (event) = print("up $event"),// 手勢抬起回調(diào)

);

Gesture 是手勢語義的抽象,而如果我們想從組件層監(jiān)聽手勢,則需要使用 GestureDetector 。GestureDetector 是一個處理各種高級用戶觸摸行為的 Widget,與 Listener 一樣,也是一個功能性組件。

GestureDetector(// 手勢識別

? ? child: Container(color: Colors.red,width: 50,height: 50),// 紅色子視圖

? ? onTap: ()=print("Tap"),// 點(diǎn)擊回調(diào)

? ? onDoubleTap: ()=print("Double Tap"),// 雙擊回調(diào)

? ? onLongPress: ()=print("Long Press"),// 長按回調(diào)

? ? onPanUpdate: (e) {// 拖動回調(diào)

? ? ? setState(() {

? ? ? ? // 更新位置

? ? ? ? _left += e.delta.dx;

? ? ? ? _top += e.delta.dy;

? ? ? });

? ? },

? ),

Flutter跨組建傳遞數(shù)據(jù)的三種方式

背景:flutter組件嵌套都很深,依次傳遞數(shù)據(jù)很麻煩,所以最好是能夠跨組件傳遞。有三張跨組件的方式:InheritedWidget、Notification、Eventbus.

是一種自上而下的傳遞數(shù)據(jù)的方式。

使用步驟:

它的數(shù)據(jù)流動方式和InheritedWidget剛好相反,從子控件向上面?zhèn)鬟f。

具體使用

跟android 原生的eventbus原理和使用一樣。

flutter與原生交互方法和底層原理分析

1.環(huán)境準(zhǔn)備, 參考鏈接

2.添加國內(nèi)環(huán)境配置: 參考鏈接

3.新建

name: String類型,代表Channel的名字,也是其唯一標(biāo)識符。

messager:BinaryMessenger類型,代表消息信使,是消息的發(fā)送與接收的工具。

codec: MessageCodec類型或MethodCodec類型,代表消息的編解碼器。

fluuter中的MessageCodec用于二進(jìn)制格式數(shù)據(jù)與基礎(chǔ)數(shù)據(jù)之間的編解碼。BasicMessageChannel所使用的編解碼器就是MessageCodec。

iOS中,名稱為FlutterMessageCodec,是一個協(xié)議,定義了兩個方法:encode接收一個類型為id的消息,將其編碼為NSData類型,而decode接收NSData類型消息,將其解碼為id類型數(shù)據(jù)。

MessageCodec有多種不同的實(shí)現(xiàn):

與MessageCodec不同的是,MethodCodec用于MethodCall對象的編解碼,一個MethodCall對象代表一次從Flutter端發(fā)起的方法調(diào)用。MethodCall有2個成員變量:String類型的method代表需要調(diào)用的方法名稱,通用類型(Android中為Object,iOS中為id)的arguments代表需要調(diào)用的方法入?yún)?/p>

由于處理的是方法調(diào)用,故相比于MessageCodec,MethodCodec多了對調(diào)用結(jié)果的處理。當(dāng)方法調(diào)用成功時,使用encodeSuccessEnvelope將result編碼為二進(jìn)制數(shù)據(jù),而當(dāng)方法調(diào)用失敗時,則使用encodeErrorEnvelope將error的code、message、detail編碼為二進(jìn)制數(shù)據(jù)

MethodCodec有兩種實(shí)現(xiàn):

分享名稱:flutter數(shù)據(jù)交互,flutter數(shù)據(jù)共享
網(wǎng)頁路徑:http://chinadenli.net/article22/dsdipjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計、電子商務(wù)、做網(wǎng)站、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)