上一篇介绍了单个子元素的widget,但是我们布局中,往往在容器中不是放一个组件的,接下来,我们来介绍一下在flutter中拥有多个子元素的widget
在水平方向上布局子部件的列表,可以让内容进行水平方向的排列,常用的属性如下:
示例demo
new Row(
children: [
new Image.asset(
'assets/images/logo.png',
width: 100,
),
new Image.asset('assets/images/logo.png', width: 100),
new Text('hello')
],
// 垂直方向的对齐方式
crossAxisAlignment: CrossAxisAlignment.center,
// 水平方向的对齐方式
textDirection: TextDirection.ltr,
// 水平方向 子widget的对齐方式
mainAxisAlignment: MainAxisAlignment.spaceBetween,
// 主轴宽度大小
mainAxisSize: MainAxisSize.max,
)
**注意:**如果行的非灵活内容(未包含在扩展或灵活小部件中的那些内容)在一起大于行本身,则说该行已经溢出。当一行溢出时,该行没有任何剩余空间可用于在其展开和弹性子项之间共
享。该行通过在溢出的边上绘制黄色和黑色条纹警告框来报告此情况。如果行外有空间,溢出量将以红色字体打印
在垂直方向上布局子窗口小部件的列表,可以让内容进行垂直方向的排列,跟row用法类似,而且效果也是差不多的,只是一个是水平方向,一个是垂直方向,常用属性:
如果你想以一种简单的方式重叠几个子控件,这个类是有用的,Stack 允许子 widget 堆叠, 你可以使用 Positioned 来定位他们相对于Stack
的上下左右四条边的位置。Stacks是基于Web开
发中的绝度定位(absolute positioning )布局模型设计的;类似于Android里面的帧布局;常用的属性:
示例demo
new Stack(
children: [
new Image.asset('assets/images/logo.png'),
new Positioned(
child: new Image.asset('assets/images/logo.png'),
left: 10,
top: 10,
width: 50,
height: 50,
),
new Text('hello Web')
],
alignment: Alignment.center,
)
一个实现流布局算法的布局;常用的属性:
用于多列表的排列,相比listView,一行可以放置多个;常用的属性:
示例demo
new GridView(
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount:3,
crossAxisSpacing: 20
),
scrollDirection: Axis.vertical,
children: [
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
],
)
可滚动的线性小widget列表。ListView是最常用的滚动widget。它在滚动方向上一个接一个地显示其子项。在交叉轴上,子控件需要填充ListView;常用属性:
示例demo
new ListView(
itemExtent: 100,
children: [
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
new Image.asset('assets/images/logo.png'),
],
)
在这里仅仅是对widget进行了介绍,让大家知道每一个widget有什么作用和效果,具体还需要大家多多去联系,才能去熟悉