Input 颤振-当键盘弹出时,将SingleChildScrollView置于屏幕顶部

Input 颤振-当键盘弹出时,将SingleChildScrollView置于屏幕顶部,input,scroll,flutter,textfield,flutter-layout,Input,Scroll,Flutter,Textfield,Flutter Layout,我想制作一个简单的屏幕,在一列中显示多个文本字段,上面显示一些内容,下面显示一个按钮。在我的第一次尝试中,在没有SingleChildScrollView的情况下,我得到了一个“renderflex溢出”错误,可以通过将文本字段放在SingleChildScrollView中来解决。 现在我的问题是,当我选择任何文本字段并弹出键盘时,SingleChildScrollView在屏幕上的位置太高。我希望它基本上保持原样,因为在SingleChildScrollView下面有足够的(黄色)空间放置键

我想制作一个简单的屏幕,在一列中显示多个文本字段,上面显示一些内容,下面显示一个按钮。在我的第一次尝试中,在没有SingleChildScrollView的情况下,我得到了一个“renderflex溢出”错误,可以通过将文本字段放在SingleChildScrollView中来解决。 现在我的问题是,当我选择任何文本字段并弹出键盘时,SingleChildScrollView在屏幕上的位置太高。我希望它基本上保持原样,因为在SingleChildScrollView下面有足够的(黄色)空间放置键盘。

我尝试将代码从应用程序应用到我的应用程序,但找不到真正解决我问题的部分。 有人知道我如何控制键盘向上推动SingleChildScrollView的程度,或者我如何解决这个问题吗?非常感谢

Scaffold(
    backgroundColor: Colors.yellow,
    body: new SingleChildScrollView(
        controller: _scrollController,
        child: new Container(
          margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0),
          color: Colors.orange,
          child: new Column(children: <Widget>[
            new Container(
              margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 20.0),
              height: 200.0,
              width: 200.0,
              color: Colors.grey,
              child: new Center(
                child: Text("Show some stuff"),
              ),
            ),
            new Container(
              color: Colors.blue,
              child: new Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  new TextField(
                    decoration: InputDecoration(labelText: "Label 1"),
                  ),
                  new TextField(
                    decoration: InputDecoration(labelText: "Label 2"),
                  ),
                ],
              ),
            ),
            new RaisedButton(
              child: const Text('Start'),
              color: Theme.of(context).accentColor,
              textColor: Colors.white,
              elevation: 4.0,
              splashColor: Colors.blueGrey,
              onPressed: () {
                // Perform some action
                //button1(context);
              },
            ),
          ]),
        )));
脚手架(
背景颜色:Colors.yellow,
正文:新的SingleChildScrollView(
控制器:\ u滚动控制器,
子容器:新容器(
边距:LTRB(10.0,10.0,10.0,10.0,10.0)的边距集,
颜色:颜色。橙色,
子项:新列(子项:[
新容器(
边距:LTRB(10.0,10.0,10.0,20.0)的边距集,
高度:200.0,
宽度:200.0,
颜色:颜色。灰色,
孩子:新中心(
孩子:文本(“展示一些东西”),
),
),
新容器(
颜色:颜色,蓝色,
子:新列(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
新文本字段(
装饰:输入装饰(标签文本:“标签1”),
),
新文本字段(
装饰:输入装饰(标签文本:“标签2”),
),
],
),
),
新升起的按钮(
子项:常量文本(“开始”),
颜色:主题。背景。强调颜色,
textColor:Colors.white,
标高:4.0,
颜色:颜色。蓝灰色,
已按下:(){
//执行一些操作
//按钮1(上下文);
},
),
]),
)));

}我把它修好了。在执行导航时,我无意中将脚手架放在另一个脚手架的主体内,因此我的结构如下:

Scaffold(
      appBar: AppBar(
        title: Text('My App'),
      ),
      body: ScaffoldShownInMyQuestion(),
    )

只返回SingleChildScrollView,而不使用第二个支架将其包裹,并将其用作主体,解决了我的问题。

我无法重现此问题。你能试着使用listView,看看你的滚动是否变得更平滑吗?我想你没有用
\u scrollController
做任何事情,你会嵌套脚手架吗?我确实是在嵌套脚手架,Günter Zöchbauer。拆下一个脚手架,我就把它修好了。谢谢。嗨,我只是想对你的解决方案表示衷心的感谢。