189 8069 5689

flutter卡片布局,flutter布局原理

Flutter开发--如何布局?

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

成都创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站设计、网站制作、网站优化、软件开发、网站改版等服务,在成都10多年的网站建设设计经验,为成都1000多家中小型企业策划设计了网站。

根据设计图,可以看出整体可以分成两部分,上面一部分是系统介绍模块,下面一部分是真正的登录内容,因为涉及到叠加,因此考虑用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初步探索(二)使用Tabs

在Material的设计准则里面,tabs是一个常用的模块。Flutter里面包含了 material library 创建tab布局的简便方法

为了使tab起作用,我们需要保持选中的tab和相关内容同步。这就是 TabController 的职责。

我们可以手动创建 TabController ,也可以使用 DefaultTabController 小部件。使用 DefaultTabController 是最简单的选项,因为它将为我们创建一个 TabController ,并使它可用于所有子类Widget。

现在我们已经有个一个 TabController ,我们可以 TabBar Widget去使用创建我们的tab。在这个示例中,我们将会在一个 AppBar 下.创建一个包含3个 Tab Widgets 的 TabBar 。

默认情况下, TabBar 在Widget树中查找最近的 DefaultTabController 。如果是手动创建的 TabController ,则需要将其传递到“TabBar”。

既然我们有了选项卡,那么我们就需要在选择选项卡时显示相关的内容。因此,我们将使用 TabBarView Widget.

备注: 顺序很重要,必须与 TabBar 中的选项卡的顺序相对应!

1. Flutter初步探索(二)使用Tabs

1. Working with Tabs

Flutter 仿抖音效果 (二) 界面布局

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

Flutter 仿抖音效果 (二) 界面布局

[Flutter 仿抖音效果 (三) 视频播放列表] ( )

项目地址: 持续效果更新

1.基本的布局是简单的,外层通过Stack作为根

2.左边点赞的控件组通过Align进行统一布局

3.顶部控件组通过Positioned进行布局,设置顶部距离,其实也可以用align,我们多使用几种来习惯flutter的布局

4.底部同样使用Positioned,设置底部距离

5.子页面的左右滑动使用PageView,一开始我们要从推荐开始左滑到关注,可以使用reverse属性,不需要更多额外的操作

1.pageController监听

刷新顶部的下划线时,我们一样使用StreamController刷新,这样效率比setstate高很多

2.歌曲名走马灯效果

这个效果看起来挺麻烦的其实实现起来超级的简单用最普通的ListView就能快速的实现

首页listview里面套入的是最简单的container+text

listview添加一个ScrollController做为滑动的控制

使用一个定时器,把listview滑到最大的位置之后,在滑回去

先通过scroController.position.maxScrollExtent获取最大位置,

然后通过scroController.animateTo进行滑动,因为我设置一次循环的时间是3000毫秒,所以滑过去和滑回来的时间各占一般 new Duration(milliseconds: (time * 0.5).toInt()),还有就是歌名没有大于最大宽度时候其实我们不需要进行滑动,所以判断maxScrollExtent是否大于0来确定是否进行滑动动画

Flutter快速上手8:基础布局之辅助布局

水平垂直居中布局。类似Container设置alignment

固定宽高布局,类似Container设置了宽高

宽高比布局。

四、FractionallySizedBox

百分比布局。

这里注意百分比布局外层一定是一个有大小的容器(如SizedBox、Container),否则会报错。

卡片布局。

本地Flutter 2.10.1,Mac版Android Studio Bumblebee | 2021.1.1 Patch 2

我是小栗子,初学Flutter ,文章会根据学习进度不定时更新,请多多指教~~


分享标题:flutter卡片布局,flutter布局原理
文章路径:http://cdxtjz.com/article/hochoi.html

其他资讯