我一直在处理 Flutter 中一个我无法弄清楚的奇怪情况。
问题是,当我尝试在任何类型的可滚动小部件中使用任何类型的 TextField 时,当我点击 TextField 以使键盘出现时,键盘会将 TextField 推离屏幕。Scaffold 中的一切都是空白。
我不能确切地说发生了什么,但有时似乎键盘将可滚动视图的内容向上推过视图,但其他时候似乎似乎有一个巨大的白色框连接到顶部覆盖上下文的键盘。我做了几次实验,但我无法确定确切的行为。
需要明确的是,我尝试过使用 SingleChildScrollView 和 ListView。行为是一样的。
我已经通读了整个线程并尝试了解决方法但没有成功:https : //github.com/flutter/flutter/issues/10826
我也试过使用这个解决方法:https : //gist.github.com/collinjackson/50172e3547e959cba77e2938f2fe5ff5
但是,我只是不确定我是否遇到了与这些线程完全相同的问题。
这是一个演示问题的代码片段和一些屏幕截图。我只是在做一些明显错误的事情吗?
class MakeEntryView extends StatefulWidget {
@override
State<StatefulWidget> createState() => new MakeEntryState();
}
class MakeEntryState extends State<MakeEntryView> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new SingleChildScrollView(
child: new Container(
child: new Column(
children: <Widget>[
new TextField(),
new TextField(),
new TextField(),
new TextField(),
new TextField(),
new TextField(),
new TextField(),
],
),
),
)
);
}
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
按文本字段之前
按文本字段后
sco*_*017 14
脚手架有一个适当的处理这个:
Scaffold(
resizeToAvoidBottomPadding: false,
Run Code Online (Sandbox Code Playgroud)
在极少数情况下它不起作用,但应该照顾它。