#flutter #gridview #alignment
#flutter #gridview #выравнивание
Вопрос:
Я хочу выровнять содержимое элемента GridView по центру (как по вертикали, так и по горизонтали) без изменения размера виджета.
Этот код создает a GridView
с элементом в нем, он имеет выравнивание по центру сверху по умолчанию, а размер является квадратом по умолчанию.
GridView.count(
crossAxisCount: 3,
children: [
Container(
// alignment: Alignment.center,
child: RaisedButton(
child: Column(
children: [
Text("Top text"),
Text("Bottom text"),
],
),
onPressed: (){}
),
),
],
);
Когда я раскомментирую выравнивание, оно не выравнивает элементы правильно, и размер элемента изменяется, я не хочу ни того, ни другого.
Обратите внимание, что мне нужно несколько Widget
s в этом GridView
элементе, поэтому я не могу удалить Column
его (но, может быть, я могу заменить его?).
Комментарии:
1. Просто добавьте MainAxisAlignment.center в виджет столбца, чтобы выровнять все его содержимое по центру следующим образом>> Столбец (mainAxisAlignment: MainAxisAlignment.center, дочерние элементы:[…….]);
2. @bluenile Спасибо, с вашим кодом
Widget
он выровнен по центру, как я и хотел. Хотя его размер все еще изменился , есть ли у вас какие-либо идеи, как этого избежать?
Ответ №1:
Я не вижу никаких изменений размера после добавления mainAxisAlignment в столбец. Пожалуйста, запустите приведенный ниже код :
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GridView.count(
crossAxisCount: 3,
children: [
Container(
// alignment: Alignment.center,
child: RaisedButton(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("Top text"),
Text("Bottom text"),
],
),
onPressed: () {}),
),
],
);
}
}