Я хочу выровнять содержимое элемента GridView по центру (как по вертикали, так и по горизонтали) без изменения размера виджета.
Этот код создает GridView
с элементом внутри, он имеет выравнивание по центру сверху и размер по умолчанию — квадрат.
GridView.count(
crossAxisCount: 3,
children: [
Container(
// alignment: Alignment.center,
child: RaisedButton(
child: Column(
children: [
Text("Top text"),
Text("Bottom text"),
],
),
onPressed: (){}
),
),
],
);
А выглядит это так:
Когда я раскомментирую выравнивание, оно неправильно выравнивает элементы, и размер элемента изменяется, я не хочу ни одного из них.
Обратите внимание, что мне нужно несколько Widget
в этом элементе GridView
, поэтому я не могу удалить Column
(но, может быть, я могу заменить его?).
@bluenile Спасибо, с вашим кодом Widget
выровнено по центру, как я и хотел. Хотя его размер все еще изменился, есть ли у вас какие-либо идеи, чтобы избежать его?
Я не вижу никаких изменений размера после добавления 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: () {}),
),
],
);
}
}
Просто добавьте MainAxisAlignment.center в виджет Column, чтобы выровнять все его содержимое по центру, как здесь >> Column(mainAxisAlignment: MainAxisAlignment.center, children:[.......]);