Do one thing and do it well.

0%

键盘弹出时 Flutter 部件溢出问题

方案 1

  • Column 部件改为 ListView 并。
  • 加上 shrinkWrap: true 属性达到垂直方向居中效果。
  • 加上 physics: NeverScrollableScrollPhysics() 属性达到禁止滑动。
  • 再在外层包 Center 达到横向居中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
child: Center(
child: ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: <Widget>[],
),
),
),
);
}
}
Use ListView

方案 2

Column 外层包 SingleChildScrollView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
child: Center(
child: SingleChildScrollView(
child: Column(
children: <Widget>[],
),
),
),
),
);
}
}
Use SingleChildScrollView

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