Ich möchte wissen, wie ich eine Breite einstellen kann, die der übergeordneten Layoutbreite entspricht
new Container(
width: 200.0,
padding: const EdgeInsets.only(top: 16.0),
child: new RaisedButton(
child: new Text(
"Submit",
style: new TextStyle(
color: Colors.white,
)
),
colorBrightness: Brightness.dark,
onPressed: () {
_loginAttempt(context);
},
color: Colors.blue,
),
),
Ich weiß ein wenig über Expanded
Widget, aber Expanded
erweitert die Ansicht in beide Richtungen, ich weiß nicht, wie es geht.
flutter
flutter-layout
Mohit Suthar
quelle
quelle
Antworten:
Die richtige Lösung wäre die Verwendung des
SizedBox.expand
Widgets, das erzwingtchild
, dass es der Größe des übergeordneten Elements entspricht.Es gibt viele Alternativen, die mehr oder weniger Anpassungen ermöglichen:
oder mit a
ConstrainedBox
quelle
Failed assertion: line 1645 pos 12: '!_debugDoingThisLayout': is not true.
Das Größenattribut kann
ButtonTheme
mit verwendet werdenminWidth: double.infinity
oder nachdem https://github.com/flutter/flutter/pull/19416 gelandet ist
quelle
quelle
Am einfachsten ist es, ein
FlatButton
in a eingeschlossenes zu verwendenContainer
. Die Schaltfläche nimmt standardmäßig die Größe ihres übergeordneten Elements an und weist dem so eine gewünschte Breite zuContainer
.Ausgabe:
quelle
Nach einigen Recherchen habe ich eine Lösung gefunden und danke an @ Günter Zöchbauer,
Ich habe Spalte anstelle von Container und verwendet
Setzen Sie die Eigenschaft auf die Spalte CrossAxisAlignment.stretch , um das übergeordnete Element von Button zu füllen
quelle
Column
/Row
sollte nicht für ein untergeordnetes Layout verwendet werden. Verwenden Sie stattdessen die Alternative für ein Kind. WieAlign
,SizedBox
und ähnliche.@ Mohit Suthar,
Wir haben eine der besten Lösungen gefunden, um Eltern über Breite und Höhe wie unten anzupassen
Hier können Sie überprüfen, ob der
Expanded
Controller die gesamte verbleibende Breite und Höhe erfasst .quelle
Das hat bei mir funktioniert .
Der einfachste Weg, um die Breite oder Höhe der übergeordneten Elemente im obigen Code anzugeben.
quelle
Für
match_parent
Sie können verwendenFür einen bestimmten Wert können Sie verwenden
quelle
Sie können die Übereinstimmung des Widgets mit festlegen
1) Setzen Sie die Breite auf double.infinity :
2) Verwenden Sie MediaQuery:
quelle
Der folgende Code funktioniert für mich
quelle
Dies funktioniert für mich in einem eigenständigen Widget.
quelle
Das funktioniert bei mir.
quelle
Die Verwendung von a
ListTile
funktioniert auch, da eine Liste die gesamte Breite ausfüllt:quelle
Sie können dies mit MaterialButton tun
quelle
quelle
Dieser hat für mich gearbeitet
quelle
RaisedButton( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [Text('Submit')], ) )
Für mich geht das.quelle
Der grundlegendste Ansatz ist die Verwendung von Container, indem die Breite auf unendlich definiert wird. Siehe das folgende Codebeispiel
quelle
So etwas funktioniert bei mir.
quelle
Legen Sie Ihre
RaisedButton(...)
in eineSizedBox
quelle