flutter动态row(Flutter动态表单字段)

网友投稿 2155 2022-12-26

本篇文章给大家谈谈flutter动态row,以及Flutter动态表单字段对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享flutter动态row的知识,其中也会对Flutter动态表单字段进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

flutter widget:Row

row : 在水平方向上排列子widget的列表.

Row 是继承 Flex = MultiChildRenderObjectWidget = RenderObjectWidget = Widget .
所以 Row 具有动态布局的特点,可以让子控件展开以填充可水平的可用空间,用一个 Expanded 的控件包裹子控件。
Row 不支持滚动(通常认为一行的子控件超过可以容纳空间是错误的)。如果有一行控件控件比较多,希望可以滑动的时候,可以采用 ListView 。
同样,如果是垂直方向方面和 Row 对应的是 Column 。
小demo

这里需要注意的地方:
因为在 Row 里面有text,但是因为text的长度过长,一行肯定是放不下的,所以这里考虑用Expanded包裹一个Text,这样文字会自动换行,填充剩余部分。

效果图如下

修改下Row的 内容:

效果如下:可见多个Expanded 具有平分剩余空间的功能。和android 的weight 属性很相像。

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

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

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(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 Row Column 布局溢出的问题

大家在学习Flutter的时候flutter动态row,刚刚开始学习布局应该会各种遇到溢出。比如在用到Row或者Column经常会遇到布局溢出的问题。

Consider applying a flex factor (e.g. using an Expanded widget) to force the children of the RenderFlex to fit within the available space instead of being sized to their natural size.

This is considered an error condition because it indicates that there is content that cannot be seen. If the content is legitimately bigger than the available space, consider clipping it with a ClipRect widget before putting it in the flex, or using a scrollable container rather than a Flex, like a ListView.
SingleChildScrollView和Expanded做为布局防止布局溢出 关于flutter动态row和Flutter动态表单字段的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 flutter动态row的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Flutter动态表单字段、flutter动态row的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:flutter底部评论区(flutter 底部弹出框)
下一篇:springboot Interceptor拦截器excludePathPatterns忽略失效
相关文章

 发表评论

暂时没有评论,来抢沙发吧~