当键盘出现时,屏幕上的所有小部件都会隐藏起来

flutter all widgets on screen hides when keyboard appears

我正在使用 TabBar 和自定义搜索视图,当我在 TextField 内单击进行搜索时,键盘会弹出我的所有视图隐藏,附上下面的屏幕截图。这是颤振问题还是我的代码做错了。请看看我的代码。没有弹出键盘我这工作正常。

return new Scaffold(

  body: new Container(
    //  margin: EdgeInsets.all(10.0),

      //color: Colors.white30,

      child: new Column(
        children: <Widget>[
          new Container(
              height: 70.0,
              color: Theme.of(context).primaryColor,
              child: new Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: new Card(
                      child: new Container(
                        child: new Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: <Widget>[
                            Padding(
                              padding: const EdgeInsets.only(left: 3.0),
                              child: new Icon(Icons.search),
                            ),

                            new Container(

                              width: MediaQuery.of(context).size.width - 100.0,
                              // Subtract sums of paddings and margins from actual width
                              child: new TextField(
                                controller: controller,
                                decoration: new InputDecoration(
                                    hintText: 'Search', border: InputBorder.none),
                               // onChanged: onSearchTextChanged,
                              ),
                            ),

                            new IconButton(icon: new Icon(Icons.cancel), onPressed: () {
                              controller.clear();
                             // onSearchTextChanged('');
                              FocusScope.of(context).requestFocus(new FocusNode());
                            },),



                          ],
                        ),
                      )
                  ))),
          new Flexible(
            child: new ListView.builder(
                itemCount: productList == null ? 0 : productList.length,
                itemBuilder: (BuildContext context, int index) {

                  return new Container(

                    child: new Column(
                      children: <Widget>[
                        new Container(
                          margin: EdgeInsets.all(10.0),


                          child: new Column(

                            children: <Widget>[
                              new Column(
                                children: <Widget>[
                                  new Padding(padding: const EdgeInsets.only(top: 5.0)),
                                  new Row(
                                    mainAxisAlignment:  MainAxisAlignment.spaceBetween,
                                    children: <Widget>[

                                      new Container(
                                        alignment: FractionalOffset.topLeft ,
                                        width: 250.0,
                                        child: new Column(
                                          mainAxisAlignment: MainAxisAlignment.start,
                                          children: <Widget>[
                                            new Text(productList[index].name,

                                              style: new TextStyle(color: Colors.black,
                                                  fontSize: 18.0, fontWeight: FontWeight.bold),
                                            )

                                          ],
                                        ),
                                      ),


                                      new Text("£"+productList[index].price.toString(),
                                        style: new TextStyle(color: Colors.black,
                                            fontSize: 18.0, fontWeight: FontWeight.bold
                                        ),),

                                    ],
                                  )


                                ],
                              ),

                              new Row(
                                mainAxisAlignment: MainAxisAlignment.start,
                                children: <Widget>[
                                  new Flexible(
                                      child: new Column(
                                        crossAxisAlignment: CrossAxisAlignment.start ,
                                        children: <Widget>[

                                          new Text(

                                            productList[index].description,
                                            overflow:  TextOverflow.fade ,),
                                        ],
                                      ))
                                ],
                              ),

                              new Row(
                                mainAxisAlignment: MainAxisAlignment.end,
                                children: <Widget>[
                                  new  ListTileItemAddRemove(productList[index]),


                                  new Padding(padding: EdgeInsets.only(bottom: 10.0))
                                ],
                              )


                            ],
                          ),
                        ),
                        new Divider(color: Colors.black,)
                      ],
                    ),

                  );

                }),
          ),
        ],
      )


  ),
 );

当我在 TextField 内部单击时,所有小部件都会消失。请看下面。

我认为弹出键盘时 flutter 小部件会调整大小,我通过在 Scaffold 中设置 resizeToAvoidBottomPadding 的值 false 解决了这个问题。问题已解决,但我仍在寻找此问题背后的原因。

return new Scaffold(
  resizeToAvoidBottomPadding : false,
  body: new Container(
  -
  -
  -
  -
  }