flutter旋转展示的简单介绍

Flutter 滑动、缩放控件

onInteractionEnd 交互结束

创新互联建站自2013年创立以来,是专业互联网技术服务公司,拥有项目网站制作、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元瑞昌做网站,已为上家服务,为瑞昌各地企业和个人服务,联系电话:028-86922220

onInteractionStart 交互开始

onInteractionUpdate 滑动时候一直会回调

focalPoint 是相对于屏幕左上角的偏移量。

localFocalPoint是相对于父容器区域左上角的偏移量。

scale缩放量。

horizontalScale水平缩放量。

verticalScale竖直缩放量。

rotation旋转量。------ 这里说明能监听到旋转量

还可以通过transformationController进行变换控制,有兴趣的可以自己研究。

参考文章

Flutter Transform使用介绍

窗口小部件(Widget)可以在Paint之前应用Transform进行转换,通过Transform可以对widget进行平移、旋转、缩放等矩阵变换。不像RotatedBox在layout前就对Widget进行旋转操作,Transform是在Widget绘制前进行转换,这意味着在计算Widget的显示需要占用多少空间时,不会去考虑Transform变换。

例子

在垂直方向移动15个单位距离

例子

顺时针旋转45°

例子

放大1.5倍

Flutter(6):基础组件之Image

Image是一个用于展示图片的组件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。

Image.asset - 用于从资源目录的显示图片,需要在 pubspec.yaml 文件中声明。

Image.network - 用于从网络上显示图片。

Image.file - 用于从文件里显示图片。

Image.memory - 用于从内存里(Uint8List)显示图片。

alignment → AlignmentGeometry - 图像边界内对齐图像。

centerSlice → Rect - 九片图像的中心切片。

color → Color - 该颜色与每个图像像素混合colorBlendMode。

colorBlendMode → BlendMode - 用于 color 与此图像结合使用。

fit → BoxFit - 图像在布局中分配的空间。

gaplessPlayback → bool - 当图像提供者发生变化时,是继续显示旧图像(true)还是暂时不显示(false)。

image → ImageProvider - 要显示的图像。

matchTextDirection → bool - 是否在图像的方向上绘制图像 TextDirection。

repeat → ImageRepeat - 未充分容器时,是否重复图片。

height → double - 图像的高度。

width → double - 图像的宽度。

加载资源图片需要将图片资源放入工程中,例如:新建images文件夹,将图片放在该文件夹下,图片适配则是使用ios的方式1X,2X,3X:

然后在pubspec.yaml中配置assets:

加载资源/网络/本地文件图片/内存图片:

占位图加载图片:

圆形图片:1.裁剪实现 2.CircleAvatar实现 3.Container边框实现

圆角图片:1.裁剪实现 2.Container边框实现

BoxFit.contain 全图居中显示但不充满,显示原比例

BoxFit.cover 图片可能拉伸,也可能裁剪,但是充满容器

BoxFit.fill 全图显示且填充满,图片可能会拉伸

BoxFit.fitHeight 图片可能拉伸,可能裁剪,高度充满

BoxFit.fitWidth 图片可能拉伸,可能裁剪,宽度充满

BoxFit.scaleDown 效果和contain差不多, 但是只能缩小图片,不能放大图片

下一节学习基础组件之Text

Flutter动画 --- 平移/旋转/缩放/渐变

在Flutter中Widget动画的核心类有下面这些:

Animation:动画库中的一个核心类,它生成指导动画的值;

CurvedAnimation:将动画过程抽象为一个非线性曲线;

AnimationController:用来管理管理动画,常用的方法有forward():启动动画;reverse({double from}:倒放动画;reset():重置动画,将其设置到动画的开始位置;stop({ bool canceled = true }):停止动画。

Tween:AnimationController对象的范围从0.0到1.0。如果您需要不同的范围或不同的数据类型,则可以使用Tween来配置动画以生成不同的范围或数据类型的值。

Flutter开发--如何布局?

相对于iOS开发,Flutter的布局更具有灵活性,每个页面设计都不一样,相同页面可选择的布局方式也不一样,如果单纯的说应该如何去布局,我觉得不现实,大家可以参考下 Flutter官方的布局教程 。接下来,笔者,通过项目中的一个页面,来一步一步的拆解布局的流程。整个过程,基本上按照拆解、组件封装、具体布局这三步来的。

根据设计图,可以看出整体可以分成两部分,上面一部分是系统介绍模块,下面一部分是真正的登录内容,因为涉及到叠加,因此考虑用Stack;

系统介绍模块部分:整体也是涉及到叠加,考虑用Stack,分为四部分。最底部渐变色背景用一个contanier,无须指定位置,全视图扩展;载放logo图标在上一层,用Image。最后两个Text同级放在最上层。Image,Text各用Positioned包裹去指定位置。

登录内容模块是最外层是一个Contanier容器,去控制背景色和圆角。然后是一个Column元素,逐行排列。

第一行为Image,

第二行为Text,

第三行可以看成一个小Column,分两块进行布局

第四行可以看成一个小Column,分两块进行布局

第五行可以看作一个TextButton,

第六行可以看作一个Row,分三块进行布局

通过上面这样一步一步的分析后,基本上对大致的布局有了一个了解,最外层的控件大致选对(只要能实现的话,就是复杂度以及效率的问题),然后一步一步的拆解每一行的元素,如果有重复的或者觉得可以封装出来的部分,则进行下一步。

每一行的拆解,大致也是按照这个思路来进行,因此笔者在这里就不做讲解了。

在做到第三第四行的时候,发现这两个很相似,而且设计到一些交互逻辑,笔者就想对第三第四行的这种展示进行封装,觉得今后的布局可能会用到,因此在这一步,可以先把这一块儿抽离出一个控件。利用TextField来实现这种输入操作,具体的实现笔者不再详细的描述了。

经过这一步,整体的规划设计图已经有了,各个组件也都有了,接下来的工作就是组装了。

具体布局设计到一些细节的地方,例如整体Column的居中对齐(crossAxisAlignment)、间隔(Padding或Container包裹,笔者更喜欢用SizedBox占位)、居左居右居中(Align)、点击事件(GestureDetector)以及圆角(BorderRadius)等一些特殊情况。

像第六行row是放在底部的,就可以在第六行前面增加一个Spacer()去填充空白区域。

对文字颜色大小等,可以用TextStyle直接设置。

对于输入框的删除按钮,可以用Offstage这种Flutter特有的控制显示隐藏的控件。

flutter_inappbrowser和h5交互

需求,app中使用webview和h5交互,根据h5发过来的消息,在屏幕上展示flutter组件,并且可以发送消息给h5。

首先使用的组件是flutter_WebView_plugin,这个组件不能嵌套flutter组件,所以放弃这个组件。

flutter_inappbrowser 可以实现组合布局, 所以选用了此库, GitHub链接

[


本文标题:flutter旋转展示的简单介绍
URL网址:http://azwzsj.com/article/dsdgcee.html