成都网站建设设计

将想法与焦点和您一起共享

包含flutterup的词条

Flutter 手势系列教程---Listener

Listener 它是主要的功能是用来监听屏幕触摸事件,取决于它的子组件区域范围,比如按下、移动、抬起、取消等操作时可以添加监听。

十多年的卫东网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整卫东建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“卫东网站设计”,“卫东网站推广”以来,每个客户项目都认真落实执行。

我们知道 Flutter 组件只有按钮才会有事件,那么如果我需要在文字或者某个容器上添加事件那我就需要借助 Listener

手势系列视频教程地址

Listener 常用于当手指滑动屏幕时进行隐藏键盘或者下拉刷新、上拉加载时进行事件监听。

一般在实际的开发过程中我们很少会用到 Listener 来监听手势,一般都是通过 GestureDetector 来进行监听或者使用 MouseRegion 来监听鼠标的事件,而 MouseRegion 常用于web开发中, GestureDetector 常用于app。

我们经常使用的回调函数主要有三个

我们这里主要是针对 onPointerDown 、 onPointerMove 、 onPointerUp 进行演示,因为我们在平时的开发过程中最常用到的属性就是这三个,而且其他的属性也都被废弃掉了。

我们这里先点击橙色容器,在点击一次红色容器,他们打印的结果如下。

PointerEvent 是触摸、手写笔、鼠标事件的基类。

在上文中,我们知道了什么是 Listener 并写了一个简单的案例,在使用案例的过程中我们的事件里面都带了一个 event 参数,而所有的事件最终都是继承自 PointerEvent ,那我们接下来看看 event 的参数有什么作用。

PointerEvent 的属性非常多,但在我们实际的开发过程中很少会使用到,只有在特定的情景下才会使用对应的属性。

如需要做一个全局悬浮的按钮我们会使用到 position

如需要做绘图软件我们需要用到 buttons 、 kind 等

所以大家可以根据实际的应用场景来使用对应的属性即可,下面是我对 PointerEvent 的属性进行的一个详细描述。

behavior 属性,它决定子组件如何响应命中测试,它的值类型为 HitTestBehavior ,这是一个枚举类,有三个枚举值

对子组件一个接一个的进行命中测试,如果子组件中有测试通过的,则当前组件通过,这就意味着,如果指针事件作用于子组件上时,其父级组件也肯定可以收到该事件。

在命中测试时,将当前组件当成不透明处理(即使本身是透明的),最终的效果相当于当前Widget的整个区域都是点击区域

点击组件透明区域时,可以对自身边界内及底部可视区域都进行命中测试,这意味着点击顶部组件透明区域时,顶部组件和底部组件都可以接收到事件

我们这里演示每次都是先点击绿色盒子在点击文字,以便大家能更好的分辨出这三个属性的使用区别

Listener 是 Flutter 中比较重要的功能性组件,它主要的功能是用来监听屏幕触摸事件,事件回调可以获取对应的属性来个性化定制app功能。

Flutter项目插件整理

#弹窗

oktoast : ^3.1.5

#路由

get : ^4.5.1

#百度地图定位

flutter_bmflocation : ^2.0.0-nullsafety.1

#百度地图-基础地图

flutter_baidu_mapapi_map : ^3.0.0+2

#百度地图-检索

flutter_baidu_mapapi_search : ^3.0.0

#百度地图-计算工具

flutter_baidu_mapapi_utils : ^3.0.0

#屏幕自动适应

flutter_screenutil : ^5.2.0

#Banner图切换

flutter_swiper_plus : ^2.0.4

#网络请求

dio : ^4.0.4

dio_cache_interceptor : ^3.2.2

pretty_dio_logger : ^1.2.0-beta-1

#城市选择器

azlistview : ^2.0.0

#本地存储

get_storage : ^2.0.3

#权限

permission_handler : ^8.3.0

#保存图片

image_gallery_saver : ^1.7.1

# image_save: ^5.0.0

#常用工具类

common_utils :

path : plugin/common_utils-2.0.2

#选择器

flutter_picker : ^2.0.2

#生成二维码

qr_flutter : ^4.0.0

#验证码输入框

pin_input_text_field : ^4.1.1

# 汉字转拼音

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

#家谱树

graphview : ^1.1.1

vector_math : ^2.1.0

#行为验证码

steel_crypt : ^3.0.0+1

encrypt : ^5.0.0

#二维码识别

flutter_qr_reader : ^1.0.5

#右上角小图标

badges : ^2.0.2

#唤醒系统应用

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

#个推

getuiflut : ^0.2.11

#极光推送

# jpush_flutter:

# path: plugin/jpush_flutter-2.2.2

#极光魔链

jmlink_flutter_plugin :

path : plugin/jmlink_flutter_plugin-2.1.2

#极光认证

jverify :

path : plugin/jverify-2.2.4

#极光统计

janalytics :

path : plugin/janalytics-2.1.5

#倒计时

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

#时间轴

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

#时间模糊插件

timeago :

path : plugin/timeago-3.1.0

#屏幕截图

screenshot : ^1.2.3

#图片压缩

flutter_image_compress : ^1.1.0

#List左滑右滑

flutter_slidable : ^1.2.0

#底部伸缩抽屉-针对地图

sliding_up_panel : ^2.0.0+1

#键盘高度

flutter_keyboard_size : ^1.0.0+4

#JSON动图

lottie : ^1.2.2

#城市选择器

city_pickers :

path : plugin/city_pickers-1.0.1

#调试工具

path_provider : ^2.0.7

#打开HTML

webview_flutter : ^2.3.1

#表情

emoji_picker_flutter : ^1.0.8

#扇形进度

ai_progress : ^2.0.0

#喜欢按钮

tiktok_favorite_gesture : ^1.0.0

#获取手机信息

device_info : ^2.0.3

#包信息

package_info : ^2.0.2

device_apps : ^2.1.1

#倒计时

stop_watch_timer : ^1.3.1

#发现Android和iOS上的网络(WiFi和移动/蜂窝)连接状态

connectivity_plus : ^2.2.0

#从应用程序打开iOS和Android手机设置。

app_settings : ^4.1.1

#日志上报

sentry_flutter : ^6.1.2

#后退拦截

back_button_interceptor : ^5.0.2

#视频播放器

better_player : ^0.0.81

#APP启动图

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

#入门介绍页

intro_slider : ^3.0.3

#键盘

keyboard_actions : ^3.4.5

emoji_keyboard_flutter : ^1.2.7

#单选选择框

flutter_pickers : ^2.1.9

Flutter(5):基础组件之Row/Column

Row:在水平方向上排列子widget的列表。

Column:在垂直方向上排列子widget的列表。

注意:这两个属于多子节点空间,可以将children排列成一行/一列,但是自身不带滚动属性,如果超出了一行,在debug下面则会显示溢出的提示。

MainAxisAlignment:主轴方向上的对齐方式,会对child的位置起作用,默认是start。

其中MainAxisAlignment枚举值:

center:将children放置在主轴的中心;

end:将children放置在主轴的末尾;

spaceAround:将主轴方向上的空白区域均分,使得children之间的空白区域相等,但是首尾child的空白区域为1/2;

spaceBetween:将主轴方向上的空白区域均分,使得children之间的空白区域相等,首尾child都靠近首尾,没有间隙;

spaceEvenly:将主轴方向上的空白区域均分,使得children之间的空白区域相等,包括首尾child;

start:将children放置在主轴的起点;

其中spaceAround、spaceBetween以及spaceEvenly的区别,就是对待首尾child的方式。其距离首尾的距离分别是空白区域的1/2、0、1。

MainAxisSize:在主轴方向占有空间的值,默认是max。

MainAxisSize的取值有两种:

max:根据传入的布局约束条件,最大化主轴方向的可用空间;

min:与max相反,是最小化主轴方向的可用空间;

CrossAxisAlignment:children在交叉轴方向的对齐方式,与MainAxisAlignment略有不同。

CrossAxisAlignment枚举值有如下几种:

baseline:在交叉轴方向,使得children的baseline对齐;

center:children在交叉轴上居中展示;

end:children在交叉轴上末尾展示;

start:children在交叉轴上起点处展示;

stretch:让children填满交叉轴方向;

TextDirection:阿拉伯语系的兼容设置,一般无需处理。

VerticalDirection:定义了children摆放顺序,默认是down。

VerticalDirection枚举值有两种:

down:从top到bottom进行布局;

up:从bottom到top进行布局。

top对应Row以及Column的话,就是左边和顶部,bottom的话,则是右边和底部。

TextBaseline:使用的TextBaseline的方式,有两种,前面已经介绍过。

这个是Row/Column的内的小控件,可以用来实现权重的布局

这边使用一个Container,里面是Row,使用Expanded对子节点进行权重处理,如果不使用Expanded,直接放入其他控件也是可以的,只是无法设置权重

对于内容过长的时候,会有溢出提示:

MainAxisAlignment.center:将children放置在主轴的中心;

MainAxisAlignment.start:将children放置在主轴的起点;

MainAxisAlignment.end:将children放置在主轴的末尾;

MainAxisAlignment.spaceAround:将主轴方向上的空白区域均分,使得children之间的空白区域相等,但是首尾child的空白区域为1/2;

MainAxisAlignment.spaceBetween:将主轴方向上的空白区域均分,使得children之间的空白区域相等,首尾child都靠近首尾,没有间隙;

MainAxisAlignment.spaceEvenly:将主轴方向上的空白区域均分,使得children之间的空白区域相等,包括首尾child;

下一章我们学习基础组件之Image

Flutter 仿抖音效果 (一) 全屏点爱星

项目地址: 持续效果更新

flutter 有个onTapUp 事件,字面意思就是 点击抬起的,会返回 TapUpDetails details ,通过 localPosition 属性就能获取到x,y坐标

计算double 并不复杂,每次点击的时候记录下当前的事件戳,只要两个点击的时间戳和坐标距离小于自己设定的阈值,就可以视为双击事件

实现双击

我们使用OverlayEntry 控件,控件详细介绍

效果一共有 缩小 → 上移 → 放大 → 消失

第一组动画(缩小 上移) → 第二组动画(放大 消失)

flutter 动画需要两个类

AnimationController 负责管理动画

Animation 负责具体值操作

然后通过 Transform.scale 函数的,对scale值进行改变

补全第一组动画

现实

项目地址: 持续效果更新


新闻名称:包含flutterup的词条
文章转载:http://chengdu.cdxwcx.cn/article/dsgeods.html