Listener 它是主要的功能是用來(lái)監(jiān)聽(tīng)屏幕觸摸事件,取決于它的子組件區(qū)域范圍,比如按下、移動(dòng)、抬起、取消等操作時(shí)可以添加監(jiān)聽(tīng)。

十多年的衛(wèi)東網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整衛(wèi)東建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“衛(wèi)東網(wǎng)站設(shè)計(jì)”,“衛(wèi)東網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
我們知道 Flutter 組件只有按鈕才會(huì)有事件,那么如果我需要在文字或者某個(gè)容器上添加事件那我就需要借助 Listener
手勢(shì)系列視頻教程地址
Listener 常用于當(dāng)手指滑動(dòng)屏幕時(shí)進(jìn)行隱藏鍵盤(pán)或者下拉刷新、上拉加載時(shí)進(jìn)行事件監(jiān)聽(tīng)。
一般在實(shí)際的開(kāi)發(fā)過(guò)程中我們很少會(huì)用到 Listener 來(lái)監(jiān)聽(tīng)手勢(shì),一般都是通過(guò) GestureDetector 來(lái)進(jìn)行監(jiān)聽(tīng)或者使用 MouseRegion 來(lái)監(jiān)聽(tīng)鼠標(biāo)的事件,而 MouseRegion 常用于web開(kāi)發(fā)中, GestureDetector 常用于app。
我們經(jīng)常使用的回調(diào)函數(shù)主要有三個(gè)
我們這里主要是針對(duì) onPointerDown 、 onPointerMove 、 onPointerUp 進(jìn)行演示,因?yàn)槲覀冊(cè)谄綍r(shí)的開(kāi)發(fā)過(guò)程中最常用到的屬性就是這三個(gè),而且其他的屬性也都被廢棄掉了。
我們這里先點(diǎn)擊橙色容器,在點(diǎn)擊一次紅色容器,他們打印的結(jié)果如下。
PointerEvent 是觸摸、手寫(xiě)筆、鼠標(biāo)事件的基類(lèi)。
在上文中,我們知道了什么是 Listener 并寫(xiě)了一個(gè)簡(jiǎn)單的案例,在使用案例的過(guò)程中我們的事件里面都帶了一個(gè) event 參數(shù),而所有的事件最終都是繼承自 PointerEvent ,那我們接下來(lái)看看 event 的參數(shù)有什么作用。
PointerEvent 的屬性非常多,但在我們實(shí)際的開(kāi)發(fā)過(guò)程中很少會(huì)使用到,只有在特定的情景下才會(huì)使用對(duì)應(yīng)的屬性。
如需要做一個(gè)全局懸浮的按鈕我們會(huì)使用到 position
如需要做繪圖軟件我們需要用到 buttons 、 kind 等
所以大家可以根據(jù)實(shí)際的應(yīng)用場(chǎng)景來(lái)使用對(duì)應(yīng)的屬性即可,下面是我對(duì) PointerEvent 的屬性進(jìn)行的一個(gè)詳細(xì)描述。
behavior 屬性,它決定子組件如何響應(yīng)命中測(cè)試,它的值類(lèi)型為 HitTestBehavior ,這是一個(gè)枚舉類(lèi),有三個(gè)枚舉值
對(duì)子組件一個(gè)接一個(gè)的進(jìn)行命中測(cè)試,如果子組件中有測(cè)試通過(guò)的,則當(dāng)前組件通過(guò),這就意味著,如果指針事件作用于子組件上時(shí),其父級(jí)組件也肯定可以收到該事件。
在命中測(cè)試時(shí),將當(dāng)前組件當(dāng)成不透明處理(即使本身是透明的),最終的效果相當(dāng)于當(dāng)前Widget的整個(gè)區(qū)域都是點(diǎn)擊區(qū)域
點(diǎn)擊組件透明區(qū)域時(shí),可以對(duì)自身邊界內(nèi)及底部可視區(qū)域都進(jìn)行命中測(cè)試,這意味著點(diǎn)擊頂部組件透明區(qū)域時(shí),頂部組件和底部組件都可以接收到事件
我們這里演示每次都是先點(diǎn)擊綠色盒子在點(diǎn)擊文字,以便大家能更好的分辨出這三個(gè)屬性的使用區(qū)別
Listener 是 Flutter 中比較重要的功能性組件,它主要的功能是用來(lái)監(jiān)聽(tīng)屏幕觸摸事件,事件回調(diào)可以獲取對(duì)應(yīng)的屬性來(lái)個(gè)性化定制app功能。
#彈窗
oktoast : ^3.1.5
#路由
get : ^4.5.1
#百度地圖定位
flutter_bmflocation : ^2.0.0-nullsafety.1
#百度地圖-基礎(chǔ)地圖
flutter_baidu_mapapi_map : ^3.0.0+2
#百度地圖-檢索
flutter_baidu_mapapi_search : ^3.0.0
#百度地圖-計(jì)算工具
flutter_baidu_mapapi_utils : ^3.0.0
#屏幕自動(dòng)適應(yīng)
flutter_screenutil : ^5.2.0
#Banner圖切換
flutter_swiper_plus : ^2.0.4
#網(wǎng)絡(luò)請(qǐng)求
dio : ^4.0.4
dio_cache_interceptor : ^3.2.2
pretty_dio_logger : ^1.2.0-beta-1
#城市選擇器
azlistview : ^2.0.0
#本地存儲(chǔ)
get_storage : ^2.0.3
#權(quán)限
permission_handler : ^8.3.0
#保存圖片
image_gallery_saver : ^1.7.1
# image_save: ^5.0.0
#常用工具類(lèi)
common_utils :
path : plugin/common_utils-2.0.2
#選擇器
flutter_picker : ^2.0.2
#生成二維碼
qr_flutter : ^4.0.0
#驗(yàn)證碼輸入框
pin_input_text_field : ^4.1.1
# 漢字轉(zhuǎn)拼音
lpinyin : ^2.0.3
#多張圖片上傳
wechat_assets_picker : ^6.3.1
wechat_camera_picker : ^2.6.3
#裁剪圖片
image_cropper : ^1.5.0
#圖片壓縮
flutter_luban : ^0.1.13
#家譜樹(shù)
graphview : ^1.1.1
vector_math : ^2.1.0
#行為驗(yàn)證碼
steel_crypt : ^3.0.0+1
encrypt : ^5.0.0
#二維碼識(shí)別
flutter_qr_reader : ^1.0.5
#右上角小圖標(biāo)
badges : ^2.0.2
#喚醒系統(tǒng)應(yīng)用
url_launcher : ^6.0.17
flutter_sms : ^2.3.2
#QQ分享
tencent_kit : ^2.1.0
flutter_cache_manager : ^3.3.0
#微信SDK
fluwx : ^3.6.1+4
#支付寶SDK
tobias :
path : plugin/tobias-2.2.0
#個(gè)推
getuiflut : ^0.2.11
#極光推送
# jpush_flutter:
# path: plugin/jpush_flutter-2.2.2
#極光魔鏈
jmlink_flutter_plugin :
path : plugin/jmlink_flutter_plugin-2.1.2
#極光認(rèn)證
jverify :
path : plugin/jverify-2.2.4
#極光統(tǒng)計(jì)
janalytics :
path : plugin/janalytics-2.1.5
#倒計(jì)時(shí)
circular_countdown_timer : ^0.2.0
#加載中效果
flutter_spinkit : ^5.1.0
#APP更新
r_upgrade :
path : plugin/r_upgrade-0.3.7+2
#刷新-加載更多
flutter_easyrefresh : ^2.2.1
#右上角彈出式菜單
custom_pop_up_menu : ^1.2.2
#時(shí)間軸
timeline_tile : ^2.0.0
#虛線邊框
dotted_border : ^2.0.0
like_button : ^2.0.4
#圖片
extended_image : ^6.0.1
#圖片九宮格
nine_grid_view : ^2.0.0
#時(shí)間模糊插件
timeago :
path : plugin/timeago-3.1.0
#屏幕截圖
screenshot : ^1.2.3
#圖片壓縮
flutter_image_compress : ^1.1.0
#List左滑右滑
flutter_slidable : ^1.2.0
#底部伸縮抽屜-針對(duì)地圖
sliding_up_panel : ^2.0.0+1
#鍵盤(pán)高度
flutter_keyboard_size : ^1.0.0+4
#JSON動(dòng)圖
lottie : ^1.2.2
#城市選擇器
city_pickers :
path : plugin/city_pickers-1.0.1
#調(diào)試工具
path_provider : ^2.0.7
#打開(kāi)HTML
webview_flutter : ^2.3.1
#表情
emoji_picker_flutter : ^1.0.8
#扇形進(jìn)度
ai_progress : ^2.0.0
#喜歡按鈕
tiktok_favorite_gesture : ^1.0.0
#獲取手機(jī)信息
device_info : ^2.0.3
#包信息
package_info : ^2.0.2
device_apps : ^2.1.1
#倒計(jì)時(shí)
stop_watch_timer : ^1.3.1
#發(fā)現(xiàn)Android和iOS上的網(wǎng)絡(luò)(WiFi和移動(dòng)/蜂窩)連接狀態(tài)
connectivity_plus : ^2.2.0
#從應(yīng)用程序打開(kāi)iOS和Android手機(jī)設(shè)置。
app_settings : ^4.1.1
#日志上報(bào)
sentry_flutter : ^6.1.2
#后退攔截
back_button_interceptor : ^5.0.2
#視頻播放器
better_player : ^0.0.81
#APP啟動(dòng)圖
flutter_native_splash : ^2.0.4
#JSON-TO-MAPPER
dart_json_mapper : ^2.1.17
#HTML展示
flutter_html : ^3.0.0-alpha.2
#XD to Flutter
adobe_xd : ^2.0.1
flutter_svg : ^1.0.3
#APPBAR背景色漸變
new_gradient_app_bar : ^0.2.0
#音頻播放
flame_audio : ^1.0.0
#入門(mén)介紹頁(yè)
intro_slider : ^3.0.3
#鍵盤(pán)
keyboard_actions : ^3.4.5
emoji_keyboard_flutter : ^1.2.7
#單選選擇框
flutter_pickers : ^2.1.9
Row:在水平方向上排列子widget的列表。
Column:在垂直方向上排列子widget的列表。
注意:這兩個(gè)屬于多子節(jié)點(diǎn)空間,可以將children排列成一行/一列,但是自身不帶滾動(dòng)屬性,如果超出了一行,在debug下面則會(huì)顯示溢出的提示。
MainAxisAlignment:主軸方向上的對(duì)齊方式,會(huì)對(duì)child的位置起作用,默認(rèn)是start。
其中MainAxisAlignment枚舉值:
center:將children放置在主軸的中心;
end:將children放置在主軸的末尾;
spaceAround:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,但是首尾child的空白區(qū)域?yàn)?/2;
spaceBetween:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,首尾child都靠近首尾,沒(méi)有間隙;
spaceEvenly:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,包括首尾child;
start:將children放置在主軸的起點(diǎn);
其中spaceAround、spaceBetween以及spaceEvenly的區(qū)別,就是對(duì)待首尾child的方式。其距離首尾的距離分別是空白區(qū)域的1/2、0、1。
MainAxisSize:在主軸方向占有空間的值,默認(rèn)是max。
MainAxisSize的取值有兩種:
max:根據(jù)傳入的布局約束條件,最大化主軸方向的可用空間;
min:與max相反,是最小化主軸方向的可用空間;
CrossAxisAlignment:children在交叉軸方向的對(duì)齊方式,與MainAxisAlignment略有不同。
CrossAxisAlignment枚舉值有如下幾種:
baseline:在交叉軸方向,使得children的baseline對(duì)齊;
center:children在交叉軸上居中展示;
end:children在交叉軸上末尾展示;
start:children在交叉軸上起點(diǎn)處展示;
stretch:讓children填滿(mǎn)交叉軸方向;
TextDirection:阿拉伯語(yǔ)系的兼容設(shè)置,一般無(wú)需處理。
VerticalDirection:定義了children擺放順序,默認(rèn)是down。
VerticalDirection枚舉值有兩種:
down:從top到bottom進(jìn)行布局;
up:從bottom到top進(jìn)行布局。
top對(duì)應(yīng)Row以及Column的話(huà),就是左邊和頂部,bottom的話(huà),則是右邊和底部。
TextBaseline:使用的TextBaseline的方式,有兩種,前面已經(jīng)介紹過(guò)。
這個(gè)是Row/Column的內(nèi)的小控件,可以用來(lái)實(shí)現(xiàn)權(quán)重的布局
這邊使用一個(gè)Container,里面是Row,使用Expanded對(duì)子節(jié)點(diǎn)進(jìn)行權(quán)重處理,如果不使用Expanded,直接放入其他控件也是可以的,只是無(wú)法設(shè)置權(quán)重
對(duì)于內(nèi)容過(guò)長(zhǎng)的時(shí)候,會(huì)有溢出提示:
MainAxisAlignment.center:將children放置在主軸的中心;
MainAxisAlignment.start:將children放置在主軸的起點(diǎn);
MainAxisAlignment.end:將children放置在主軸的末尾;
MainAxisAlignment.spaceAround:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,但是首尾child的空白區(qū)域?yàn)?/2;
MainAxisAlignment.spaceBetween:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,首尾child都靠近首尾,沒(méi)有間隙;
MainAxisAlignment.spaceEvenly:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,包括首尾child;
下一章我們學(xué)習(xí)基礎(chǔ)組件之Image
項(xiàng)目地址: 持續(xù)效果更新
flutter 有個(gè)onTapUp 事件,字面意思就是 點(diǎn)擊抬起的,會(huì)返回 TapUpDetails details ,通過(guò) localPosition 屬性就能獲取到x,y坐標(biāo)
計(jì)算double 并不復(fù)雜,每次點(diǎn)擊的時(shí)候記錄下當(dāng)前的事件戳,只要兩個(gè)點(diǎn)擊的時(shí)間戳和坐標(biāo)距離小于自己設(shè)定的閾值,就可以視為雙擊事件
實(shí)現(xiàn)雙擊
我們使用OverlayEntry 控件,控件詳細(xì)介紹
效果一共有 縮小 → 上移 → 放大 → 消失
第一組動(dòng)畫(huà)(縮小 上移) → 第二組動(dòng)畫(huà)(放大 消失)
flutter 動(dòng)畫(huà)需要兩個(gè)類(lèi)
AnimationController 負(fù)責(zé)管理動(dòng)畫(huà)
Animation 負(fù)責(zé)具體值操作
然后通過(guò) Transform.scale 函數(shù)的,對(duì)scale值進(jìn)行改變
補(bǔ)全第一組動(dòng)畫(huà)
現(xiàn)實(shí)
項(xiàng)目地址: 持續(xù)效果更新
當(dāng)前題目:包含flutterup的詞條
標(biāo)題路徑:http://chinadenli.net/article13/dsgeods.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、定制網(wǎng)站、品牌網(wǎng)站制作、虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站、用戶(hù)體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)