J'essaie d'aligner deux éléments aux extrêmes, un à gauche et un à droite. J'ai une rangée alignée à gauche, puis un enfant de cette rangée est aligné à droite. Cependant, il semble que la ligne enfant récupère la propriété d'alignement de son parent. C'est mon code
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,
],
);
à la suite je reçois quelque chose comme ça
Left Right
Ce que j'aimerais, c'est
Left Right
En outre, il y a suffisamment d'espace sur la rangée. Ma question est de savoir pourquoi l’enfant Row n’expose-t-il pas son MainAxisAlignment.end
propriété ?
Utilisez un seul Row
à la place, avec mainAxisAlignment: MainAxisAlignment.spaceBetween
.
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text("left"),
new Text("right")
]
);
Ou vous pouvez utiliser Expanded
new Row(
children: [
new Text("left"),
new Expanded(
child: settingsRow,
),
],
);
Une solution simple consisterait à utiliser Spacer()
entre les deux widgets.
Row(
children: [
Text("left"),
Spacer(),
Text("right")
]
);
Vous pouvez le faire de plusieurs façons.
Utiliser mainAxisAlignment: MainAxisAlignment.spaceBetween
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
FlutterLogo(),
FlutterLogo(),
],
);
Utiliser Spacer
Row(
children: <Widget>[
FlutterLogo(),
Spacer(),
FlutterLogo(),
],
);
Utiliser Expanded
Row(
children: <Widget>[
FlutterLogo(),
Expanded(child: SizedBox()),
FlutterLogo(),
],
);
Utiliser Flexible
Row(
children: <Widget>[
FlutterLogo(),
Flexible(fit: FlexFit.tight, child: SizedBox()),
FlutterLogo(),
],
);
Sortie :