2つのアイテムを左端と右端に極端に並べようとしています。左に揃えられた行が1つあり、その行の子が右に揃えられています。ただし、子行が親から位置合わせプロパティを取得しているようです。これは私のコードです
var SettingsRow = new Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Text("Right",softWrap: true,),
],
);
var nameRow = new Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Text("Left"),
SettingsRow,
],
);
その結果、私はこのようなものを得ます
Left Right
欲しいのは
Left Right
また、行に十分なスペースがあります。私の質問は、子RowがMainAxisAlignment.end
プロパティを表示しないのはなぜですか?
代わりに、単一のRow
をmainAxisAlignment: MainAxisAlignment.spaceBetween
とともに使用します。
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text("left"),
new Text("right")
]
);
または、Expanded
を使用できます
new Row(
children: [
new Text("left"),
new Expanded(
child: settingsRow,
),
],
);
簡単な解決策は、2つのウィジェット間でSpacer()
を使用することです
Row(
children: [
Text("left"),
Spacer(),
Text("right")
]
);
多くの方法でそれを行うことができます。
mainAxisAlignment: MainAxisAlignment.spaceBetween
を使用する
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
FlutterLogo(),
FlutterLogo(),
],
);
Spacer
を使用する
Row(
children: <Widget>[
FlutterLogo(),
Spacer(),
FlutterLogo(),
],
);
Expanded
を使用する
Row(
children: <Widget>[
FlutterLogo(),
Expanded(child: SizedBox()),
FlutterLogo(),
],
);
Flexible
を使用する
Row(
children: <Widget>[
FlutterLogo(),
Flexible(fit: FlexFit.tight, child: SizedBox()),
FlutterLogo(),
],
);
出力: