成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

Flutter 之 交互

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

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

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

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

指針事件表示用戶交互的原始觸摸數(shù)據(jù),如手指接觸屏幕 PointerDownEvent、手指在屏幕上移動 PointerMoveEvent、手指抬起 PointerUpEvent,以及觸摸取消 PointerCancelEvent。在手指接觸屏幕,觸摸事件發(fā)起時,F(xiàn)lutter 會確定手指與屏幕發(fā)生接觸的位置上究竟有哪些組件,并將觸摸事件交給最內層的組件去響應。事件會從這個最內層的組件開始,沿著組件樹向根節(jié)點向上冒泡分發(fā)。通過 hitTestBehavior 去調整組件在命中測試期內應該如何表現(xià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"),// 手勢按下回調

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

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

);

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

GestureDetector(// 手勢識別

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

? ? onTap: ()=print("Tap"),// 點擊回調

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

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

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

? ? ? 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)境準備, 參考鏈接

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

3.新建

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

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

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

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

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

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

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

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

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

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

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

廣告

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

營銷型網(wǎng)站建設
上饶市| 高青县| 客服| 宾川县| 秀山| 榆林市| 永福县| 从化市| 夏邑县| 玉田县| 夹江县| 汉沽区| 华坪县| 宜城市| 武强县| 上林县| 鸡西市| 绥宁县| 中卫市| 盖州市| 辉县市| 永平县| 贵德县| 巴林左旗| 西藏| 绥棱县| 衡山县| 双桥区| 商城县| 远安县| 团风县| 南昌县| 郑州市| 海盐县| 南康市| 镇江市| 彭阳县| 石阡县| 五河县| 策勒县| 永兴县|