In Android, we can do the following to make ImageView
to fill as much space as possible depending on the size of the TextView
.
<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>
How do we achieve this in Flutter
? Assume I need to make Datetime
(green) to fill as much as possible.
new Column(
children: <Widget>[
new Text('Title',
style: new TextStyle(fontWeight: FontWeight.bold)
),
new Text('Datetime',
style: new TextStyle(color: Colors.grey)
),
],
)
In Flutter, you can make a widget fill up the remaining space of a Row or Column by wrapping it inside an Expanded or a Flexible widget.
Using MainAxisAlignment (Recommended) Using the MainAxisAlignment property of Column and Row, you can add the predefined space between the widgets. If you use the MainAxisAlignment property, you don't need to add any extra widgets in between the widgets.
Simply add a columns block to your layout and then click on the add button to start adding widgets.
Not 100% sure but I think you mean this. The Expanded widget expands to the space it can use. Althought I think it behaves a bit differently in a Row or Column.
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)
),
),
],
)
You can use:
Expanded
with Align
to position 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),
],
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With