Chcę wiedzieć, jak ustawić szerokość, aby pasowała do szerokości układu nadrzędnego
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,
),
),
Wiem trochę o Expanded
widżecie, ale Expanded
rozszerza widok w obie strony, nie wiem jak to zrobić.
flutter
flutter-layout
Mohit Suthar
źródło
źródło
Odpowiedzi:
Prawidłowym rozwiązaniem byłoby użycie
SizedBox.expand
widgetu, który wymusza jegochild
dopasowanie do rozmiaru rodzica.Istnieje wiele alternatyw, które pozwalają na większe lub mniejsze dostosowanie:
lub za pomocą
ConstrainedBox
źródło
Failed assertion: line 1645 pos 12: '!_debugDoingThisLayout': is not true.
Atrybut size można podać przy użyciu
ButtonTheme
withminWidth: double.infinity
lub po wylądowaniu https://github.com/flutter/flutter/pull/19416
źródło
źródło
Najprostszym sposobem jest użycie
FlatButton
zawiniętego wewnątrz aContainer
, przycisk domyślnie przyjmuje rozmiar swojego rodzica i przypisuje żądaną szerokość doContainer
.Wynik:
źródło
Po kilku badaniach znalazłem rozwiązanie i dzięki @ Günter Zöchbauer,
Użyłem kolumny zamiast kontenera i
ustaw właściwość na kolumnę CrossAxisAlignment.stretch na Fill match parent of Button
źródło
Column
/Row
nie należy używać do układu z jednym dzieckiem. Zamiast tego użyj alternatywy dla jednego dziecka. Takie jakAlign
,SizedBox
i podobne.Możesz ustawić dopasowanie rodzica widżetu przez
1) ustaw szerokość na double.infinity :
2) Użyj MediaQuery:
źródło
@Mohit Suthar,
Znalazłem jedno z najlepszych rozwiązań dopasowywania rodzica do szerokości i wysokości, jak poniżej
Tutaj możesz sprawdzić, czy
Expanded
kontroler uzyskał całą szerokość i wysokość pozostałej pozostałości .źródło
To zadziałało dla mnie.
Najprostszy sposób podania szerokości lub wysokości elementu nadrzędnego dopasowania w powyższym kodzie.
źródło
Dla
match_parent
można użyćDla dowolnej wartości, której możesz użyć
źródło
Poniższy kod działa dla mnie
źródło
To działa dla mnie w samodzielnym widżecie.
źródło
To działa dla mnie.
źródło
Użycie a
ListTile
również działa, ponieważ lista wypełnia całą szerokość:źródło
możesz to zrobić za pomocą MaterialButton
źródło
źródło
Ten pracował dla mnie
źródło
RaisedButton( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [Text('Submit')], ) )
Mi to pasuje.źródło
Najbardziej podstawowym podejściem jest użycie kontenera przez zdefiniowanie jego szerokości jako nieskończonej. Zobacz poniższy przykład kodu
źródło
Coś takiego działa na mnie.
źródło
Umieść swój
RaisedButton(...)
wSizedBox
źródło