【问题标题】:flutter all widgets on screen hides when keyboard appears当键盘出现时,颤动屏幕上的所有小部件隐藏
【发布时间】:2018-08-02 08:09:03
【问题描述】:

我正在使用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 内部单击时,所有小部件都会消失。请看下文。

【问题讨论】:

    标签: dart flutter flutter-layout


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2011-10-08
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多