Jak wyśrodkować kolumnę w pionie we Flutterze? Użyłem widżetu „nowe centrum”. Użyłem widżetu „nowe centrum”, ale nie wyśrodkowuje on mojej kolumny w pionie? Wszelkie pomysły byłyby pomocne ....
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Thank you"),
),
body: new Center(
child: new Column(
children: <Widget>[
new Padding(
padding: new EdgeInsets.all(25.0),
child: new AnimatedBuilder(
animation: animationController,
child: new Container(
height: 175.0,
width: 175.0,
child: new Image.asset('assets/angry_face.png'),
),
builder: (BuildContext context, Widget _widget) {
return new Transform.rotate(
angle: animationController.value * 6.3,
child: _widget,
);
},
),
),
new Text('We are glad we could serve you...', style: new TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.w600,
color: Colors.black87),),
new Padding(padding: new EdgeInsets.symmetric(vertical: 5.0, horizontal: 0.0)),
new Text('We appreciate your feedback ! !', style: new TextStyle(
fontSize: 13.0,
fontWeight: FontWeight.w200,
color: Colors.black87),),
],
),
),
);
}
W przypadku Column użyj:
Wyrównuje swoje elementy podrzędne do środka swojej macierzystej przestrzeni w pionie
źródło
Spróbuj tego. Wyśrodkowuje w pionie i poziomie.
źródło
Możesz kontrolować, jak wiersz lub kolumna wyrównuje swoje elementy podrzędne za pomocą właściwości mainAxisAlignment i crossAxisAlignment. W przypadku rzędu główna oś przebiega poziomo, a oś poprzeczna - pionowo. W przypadku słupa główna oś przebiega pionowo, a oś poprzeczna - poziomo.
źródło
Inne rozwiązanie!
Jeśli chcesz ustawić widżety w środkowej formie pionowej, możesz użyć do tego ListView. na przykład: użyłem trzech przycisków i dodałem je w ListView, po którym następuje
import 'package:flutter/material.dart'; class List extends StatelessWidget { @override Widget build(BuildContext context) { final button1 = new RaisedButton(child: new Text("Button1"), onPressed: () {}); final button2 = new RaisedButton(child: new Text("Button2"), onPressed: () {}); final button3 = new RaisedButton(child: new Text("Button3"), onPressed: () {}); final body = new Center( child: ListView( shrinkWrap: true, children: <Widget>[button1, button2, button3], ), ); return new Scaffold( appBar: new AppBar( title: Text("Sample"), ), body: body); } } void main() { runApp(new MaterialApp( home: List(), )); }
Wynik:
źródło
U mnie problem polegał na tym, że był rozszerzony wewnątrz kolumny, którą musiałem usunąć i zadziałało.
Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Expanded( // remove this flex: 2, child: Text("content here"), ), ], )
źródło
Podczas korzystania z kolumny użyj tego w widżecie kolumny:
mainAxisAlignment: MainAxisAlignment.center
Ustawia swoje dzieci (dzieci) do środka swojej macierzystej przestrzeni. Przestrzeń jest jego główną osią, tj. Pionowo
lub zawiń kolumnę widżetem Centrum:
jeśli to nie rozwiąże problemu, zawiń kontener nadrzędny widżetem Expanded.
źródło
Możesz użyć.
mainAxisAlignment:MainAxisAlignment.center
Spowoduje to przejście materiału przez środek kolumny. `crossAxisAlignment: CrossAxisAlignment.center 'Spowoduje to wyrównanie elementów w środku w rzędzie.Container( alignment:Alignment.center, Child: Column () )
Po prostu użyj.
Center ( Child: Column () )
lub rapuj za pomocą widżetu Padding. I dostosuj dopełnienie tak, aby dzieci w kolumnie były w środku.źródło