Dart 列与x27之间的间距;孩子们在激动
我有一个Dart 列与x27之间的间距;孩子们在激动,dart,flutter,flutter-layout,Dart,Flutter,Flutter Layout,我有一个列小部件,其中有两个TextField小部件作为子部件,我希望它们之间有一些空间 我已经尝试了mainAxisAlignment:mainAxisAlignment.spaceAround,但结果并不是我想要的。您可以在这两个小部件之间使用填充小部件,或者使用填充小部件包装这些小部件 更新 小部件可以在两个小部件之间使用,以在两个小部件之间添加空间,它使代码比填充小部件更可读 例: 列( 儿童:[ Widget1(), 尺寸箱(高度:10), Widget2(), ], ), 只需使用填
列
小部件,其中有两个TextField
小部件作为子部件,我希望它们之间有一些空间
我已经尝试了
mainAxisAlignment:mainAxisAlignment.spaceAround
,但结果并不是我想要的。您可以在这两个小部件之间使用填充
小部件,或者使用填充
小部件包装这些小部件
更新
小部件可以在两个小部件之间使用,以在两个小部件之间添加空间,它使代码比填充小部件更可读
例:
列(
儿童:[
Widget1(),
尺寸箱(高度:10),
Widget2(),
],
),
只需使用填充将其包装如下:
Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World!'),
),
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World2!'),
)
]);
列(
儿童:[
填充物(
填充:边缘设置。全部(8.0),
child:Text('Hello World!'),
),
填充物(
填充:边缘设置。全部(8.0),
child:Text('Hello World2!'),
)
]);
您也可以使用容器(填充…)或SizeBox(高度:x.x)。最后一个是最常见的,但这取决于您希望如何管理小部件的空间,如果空间确实是小部件的一部分,我喜欢使用填充,例如使用sizebox作为列表。您可以在小部件之间放置一个具有特定高度的
SizedBox
,如下所示:
列(
儿童:[
FirstWidget(),
尺寸箱(高度:100),
SecondWidget(),
],
),
为什么更喜欢将小部件包装在填充中?
可读性!视觉样板更少,缩进更少,代码遵循典型的阅读顺序。您可以使用Wrap()
widget代替Column()
在子窗口小部件之间添加空格。并使用spacing属性在子窗口小部件之间提供相等的空格
Wrap(
spacing: 20, // to apply margin in the main axis of the wrap
runSpacing: 20, // to apply margin in the cross axis of the wrap
children: <Widget>[
Text('child 1'),
Text('child 2')
]
)
Wrap(
间距:20,//在包裹的主轴上应用边距
行间距:20,//在包裹的横轴上应用边距
儿童:[
文本(“子1”),
文本('child 2')
]
)
与SizedBox用于代码可读性的方式相同,您可以以相同的方式使用填充小部件,而不必将其作为列的任何子项的父小部件
Column(
children: <Widget>[
FirstWidget(),
Padding(padding: EdgeInsets.only(top: 40.0)),
SecondWidget(),
]
)
列(
儿童:[
FirstWidget(),
填充(填充:仅限边集(顶部:40.0)),
SecondWidget(),
]
)
列(
儿童:[
FirstWidget(),
垫片(),
SecondWidget(),
]
)
间隔器创建一个灵活的空间来插入[flexible]小部件。(像一个专栏)你可以用不同的方法解决这个问题 如果使用行/列,则必须使用mainAxisAlignment: MainAxisAlignment.space均匀 如果使用Wrap小部件,则必须使用运行间距:5,间距: 10, 在任何可以使用SizeBox()的地方
有很多方法可以做到这一点,我在这里列出了一些
容器
并给出一些高度:
Column(
children: <Widget>[
Widget1(),
Container(height: 10), // set height
Widget2(),
],
)
Column(
children: <Widget>[
Widget1(),
Expanded(child: SizedBox()), // use Expanded
Widget2(),
],
)
Wrap
Wrap(
direction: Axis.vertical, // make sure to set this
spacing: 20, // set your spacing
children: <Widget>[
Widget1(),
Widget2(),
],
)
Wrap(
方向:Axis.vertical,//确保设置此方向
间距:20,//设置间距
儿童:[
Widget1(),
Widget2(),
],
)
列(子项:[
容器(边距:EdgeInsets.only(顶部:12,子项:yourWidget)),
容器(边距:仅限边集(顶部:12,子项:yourWidget))
]);
这里有很多答案,但我将在这里列出每个人都应该使用的最重要的答案
1。列
Column(
children: <Widget>[
Text('Widget A'), //Can be any widget
SizedBox(height: 20,), //height is space betweeen your top and bottom widget
Text('Widget B'), //Can be any widget
],
),
列(
儿童:[
Text('Widget A'),//可以是任何小部件
SizedBox(高度:20,),//高度是顶部和底部小部件之间的空间
Text('Widget B'),//可以是任何小部件
],
),
2。包裹
Wrap(
direction: Axis.vertical, // We have to declare Axis.vertical, otherwise by default widget are drawn in horizontal order
spacing: 20, // Add spacing one time which is same for all other widgets in the children list
children: <Widget>[
Text('Widget A'), // Can be any widget
Text('Widget B'), // Can be any widget
]
)
Wrap(
方向:Axis.vertical,//我们必须声明Axis.vertical,否则默认情况下小部件是按水平顺序绘制的
间距:20,//添加一次间距,这与子列表中的所有其他小部件相同
儿童:[
Text('Widget A'),//可以是任何小部件
Text('Widget B'),//可以是任何小部件
]
)
默认情况下,列没有高度,
可以将列包装到容器中,并将特定高度添加到容器中。
然后,您可以使用以下内容:
Container(
width: double.infinity,//Your desire Width
height: height,//Your desire Height
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('One'),
Text('Two')
],
),
),
容器(
宽度:两倍。无穷大,//你的欲望宽度
身高:身高,//你想要的身高
子:列(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
文本(“一”),
文本(“两个”)
],
),
),
您可能必须在列的子项之间使用SizedBox()小部件。
希望这将是有用的大小的盒子在这种情况下不会有帮助,手机处于横向模式
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
],
)
body:Column(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
扩大(
子:容器(
边距:所有边缘集(15.0),
装饰:盒子装饰(
颜色:颜色(0xFF1D1E33),
边界半径:边界半径。圆形(10.0),
),
),
),
扩大(
子:容器(
边距:所有边缘集(15.0),
装饰:盒子装饰(
颜色:颜色(0xFF1D1E33),
边界半径:边界半径。圆形(10.0),
),
),
),
扩大(
子:容器(
边距:所有边缘集(15.0),
装饰:盒子装饰(
颜色:颜色(0xFF1D1E33),
边界半径:边界半径。圆形(10.0),
),
),
),
],
)
您还可以使用辅助函数在每个子对象之后添加间距
Li
Column(children: <Widget>[
Container(margin: EdgeInsets.only(top:12, child: yourWidget)),
Container(margin: EdgeInsets.only(top:12, child: yourWidget))
]);
Column(
children: <Widget>[
Text('Widget A'), //Can be any widget
SizedBox(height: 20,), //height is space betweeen your top and bottom widget
Text('Widget B'), //Can be any widget
],
),
Wrap(
direction: Axis.vertical, // We have to declare Axis.vertical, otherwise by default widget are drawn in horizontal order
spacing: 20, // Add spacing one time which is same for all other widgets in the children list
children: <Widget>[
Text('Widget A'), // Can be any widget
Text('Widget B'), // Can be any widget
]
)
Container(
width: double.infinity,//Your desire Width
height: height,//Your desire Height
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('One'),
Text('Two')
],
),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
color: Color(0xFF1D1E33),
borderRadius: BorderRadius.circular(10.0),
),
),
),
],
)