方案 1
- 把
Column部件改为ListView并。 - 加上
shrinkWrap: true属性达到垂直方向居中效果。 - 加上
physics: NeverScrollableScrollPhysics()属性达到禁止滑动。 - 再在外层包
Center达到横向居中。
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
child: Center(
child: ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: <Widget>[],
),
),
),
);
}
}

方案 2
在 Column 外层包 SingleChildScrollView。
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
child: Center(
child: SingleChildScrollView(
child: Column(
children: <Widget>[],
),
),
),
),
);
}
}

两者的区别就是 ListView 不是 flex 的,它会填满横向的宽度。而 SingleChildScrollView 不会。