Ich versuche, zwei Elemente an den Extremen auszurichten, eines links und eines rechts. Ich habe eine Zeile, die nach links ausgerichtet ist, und dann wird ein untergeordnetes Element dieser Zeile nach rechts ausgerichtet. Es scheint jedoch, dass die untergeordnete Zeile die Ausrichtungseigenschaft von ihrer übergeordneten Zeile übernimmt. Das ist mein 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,
],
);
Als Ergebnis bekomme ich so etwas
Left Right
Was ich möchte ist
Left Right
Es gibt auch genug Platz in der Reihe. Meine Frage ist, warum die Kinderreihe ihr MainAxisAlignment.end
Eigentum nicht ausstellt .
flutter
flutter-layout
MistyD
quelle
quelle
settingsRow
, das enthältText("right")
mainAxisAlignment
des Kindes tritt nicht auf. Überholen die Eigenschaften der Eltern die der Kinder?Eine einfache Lösung wäre die Verwendung
Spacer()
zwischen den beiden WidgetsRow( children: [ Text("left"), Spacer(), Text("right") ] );
quelle
Sie können es auf viele Arten tun.
Verwenden von
mainAxisAlignment: MainAxisAlignment.spaceBetween
Verwenden von
Spacer
Verwenden von
Expanded
Verwenden von
Flexible
Ausgabe :
quelle
Stack
diesem Fall ist ein guter Ansatz zu verwenden .Stack
, wobei das erste KindAlign
(rechts) ist und das zweite einCenter
oder einfach sein kannAlign
.Ja
CopsOnRoad
ist richtig, durch den Stapel können Sie eine rechts und eine andere in der Mitte ausrichten.Stack( children: [ Align( alignment: Alignment.centerRight, child: Text("right"), ), Align( alignment: Alignment.center, child: Text("center"), ) ], )
quelle