如何在 Flutter 的 GridView 中对齐小部件?
How to align widgets in a GridView in Flutter?
我想将 GridView 项目的内容对齐到中心(垂直和水平)没有更改小部件的大小.
这段代码创建了一个 GridView
,里面有一个项目,它有一个默认的顶部居中对齐方式,大小是一个默认的正方形。
GridView.count(
crossAxisCount: 3,
children: [
Container(
// alignment: Alignment.center,
child: RaisedButton(
child: Column(
children: [
Text("Top text"),
Text("Bottom text"),
],
),
onPressed: (){}
),
),
],
);
看起来像这样:
当我取消对对齐的注释时,它没有正确对齐项目并且项目的大小发生了变化,我不想要它们。
请注意,我在那个 GridView
项中需要多个 Widget
,所以我无法删除 Column
(但也许我可以替换它?)。
将 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: () {}),
),
],
);
}
}
我想将 GridView 项目的内容对齐到中心(垂直和水平)没有更改小部件的大小.
这段代码创建了一个 GridView
,里面有一个项目,它有一个默认的顶部居中对齐方式,大小是一个默认的正方形。
GridView.count(
crossAxisCount: 3,
children: [
Container(
// alignment: Alignment.center,
child: RaisedButton(
child: Column(
children: [
Text("Top text"),
Text("Bottom text"),
],
),
onPressed: (){}
),
),
],
);
看起来像这样:
当我取消对对齐的注释时,它没有正确对齐项目并且项目的大小发生了变化,我不想要它们。
请注意,我在那个 GridView
项中需要多个 Widget
,所以我无法删除 Column
(但也许我可以替换它?)。
将 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: () {}),
),
],
);
}
}