如何使小部件填充列中剩余的 space
How to make a widget fill remaining space in a Column
在Android中,我们可以根据TextView
.[=18]的大小,使ImageView
尽可能多地填充space =]
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
我们如何在 Flutter
中实现这一点?假设我需要让 Datetime
(green) 尽可能多地填充。
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
],
)
不是 100% 确定,但我认为你是这个意思。 Expanded 小部件扩展到它可以使用的 space。虽然我认为它在行或列中的行为有点不同。
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Expanded(
child: new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
),
],
)
如果您只需要添加空白 space,请使用 Spacer()
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
Spacer(),
],
您可以使用:
Expanded
用 Align
定位 child
Column(
children: [
FlutterLogo(),
Expanded( // add this
child: Align(
alignment: Alignment.bottomCenter,
child: FlutterLogo(),
),
),
],
)
Spacer
Column(
children: [
FlutterLogo(),
Spacer(), // add this
FlutterLogo(),
],
)
mainAxisAlignment
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // add this
children: [
FlutterLogo(colors: Colors.orange),
FlutterLogo(colors: Colors.blue),
],
)
Flexible(
child: Column(
mainAxisAlignment:mainAxisAlignment.spacebetween,
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
],
)
在Android中,我们可以根据TextView
.[=18]的大小,使ImageView
尽可能多地填充space =]
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
我们如何在 Flutter
中实现这一点?假设我需要让 Datetime
(green) 尽可能多地填充。
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
],
)
不是 100% 确定,但我认为你是这个意思。 Expanded 小部件扩展到它可以使用的 space。虽然我认为它在行或列中的行为有点不同。
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Expanded(
child: new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
),
],
)
如果您只需要添加空白 space,请使用 Spacer()
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
Spacer(),
],
您可以使用:
Expanded
用Align
定位 childColumn( children: [ FlutterLogo(), Expanded( // add this child: Align( alignment: Alignment.bottomCenter, child: FlutterLogo(), ), ), ], )
Spacer
Column( children: [ FlutterLogo(), Spacer(), // add this FlutterLogo(), ], )
mainAxisAlignment
Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, // add this children: [ FlutterLogo(colors: Colors.orange), FlutterLogo(colors: Colors.blue), ], )
Flexible(
child: Column(
mainAxisAlignment:mainAxisAlignment.spacebetween,
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
],
)