成都网站建设设计

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

flutter水平居中,float 居中

Flutter 之 弹性布局 (Row、Column) (十一)

弹性布局允许子组件按照一定比例来分配父容器空间

目前创新互联已为上1000家的企业提供了网站建设、域名、雅安服务器托管、网站改版维护、企业网站设计、宁津网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

Flex组件和Row、Column属性主要的区别就是多一个direction。

当direction的值为Axis.horizontal的时候,则是Row。

当direction的值为Axis.vertical的时候,则是Column。

它们之中都有主轴(MainAxis)和交叉轴(CrossAxis)的概念:

Row可以沿水平方向排列其子widget。定义如下:

示例1 - 基本使用

示例2 - 基线对齐

基线是英文字母X的下端两点连成的一条线

示例3 - 水平方向包裹

Column可以沿垂直方向排列其子widget。定义如下:

Column 基本使用 示例

再看一个示例

运行效果如下:

我们发现文本并没有居中?

解释:

实际上,Row和Column都只会在主轴方向占用尽可能大的空间,而交叉轴的长度则取决于他们最大子元素的长度。如果我们想让本例中的两个文本控件在整个手机屏幕中间对齐,我们有两种方法:

运行效果如下:

如果Row里面嵌套Row,或者Column里面再嵌套Column,那么只有最外面的Row或Column会占用尽可能大的空间,里面Row或Column所占用的空间为实际大小,下面以Column为例说明

如果要让里面的Column占满外部Column,可以使用Expanded 组件:

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

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

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

宽高比布局。

四、FractionallySizedBox

百分比布局。

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

卡片布局。

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

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

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 布局 - Container详解

Container的组成如下:

- width  和  height :宽和高。

- color :背景色,值为一个 Color 对象,不能与 decoration 属性同时设置。

-  margin :外边距,值为一个 EdgeInsets 对象。EdgeInsets 对象即可调用EdgeInsets.all() 方法统一设置左上右下四条边的边距,也可以调用 EdgeInsets.fromLTRB() 分别设置左上右下四条边的边距。

-  padding :内间距,值同 margin。

-  alignment :元素对齐方式

-  decoration :装饰、背景颜色、边框、背景图片、等,不能与 color 属性同时设置

-  child :子组件

-参数 alignment:

topCenter :顶部居中对齐     topLeft :顶部左对齐      topRight :顶部右对齐      center :水平垂直居中对齐      centerLeft :垂直居中水平居左对齐      centerRight :垂直居中水平居右对齐      bottomCenter 底部居中对齐     bottomLeft :底部居左对齐     bottomRight :底部居右对齐

-参数 decoration :

Container参数的使用如下:


新闻标题:flutter水平居中,float 居中
分享路径:http://chengdu.cdxwcx.cn/article/dsgsgee.html