web-dev-qa-db-ja.com

30pxによるボトムオーバーフロー

TextFieldnew Expanded()でラップすると問題に直面します。 textfieldで何かを検索しようとすると、30px。以下は私のコードです:

 Widget build(BuildContext context) {
    return new Scaffold(
        body:
      Column(
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              IconButton(icon: Icon(Icons.search), onPressed: () {
                setState(() {

                });
              }),
              new Flexible(
                child: new TextField(
                  onChanged: (String value) {
                    onchange(value);
                  },
                  maxLines: 1,
                  autocorrect: true,
//                  decoration: const InputDecoration(helperText: "Search"),
                  style: new TextStyle(fontSize: 10.0, color: Colors.black),
                ),
              ),
              _text != null ? IconButton(
                  icon: Icon(Icons.close), onPressed: (){
              }) : new Container(),

              IconButton(icon: Icon(Icons.bookmark_border), onPressed: () {}),
            ],
          ),
          new Expanded(
              child: FilstList(searchtext: _text,)
          ),


        ],
      ),
    );
  }
}
9
Hitanshu Gogoi

twoこの問題の解決策があります。

  1. _resizeToAvoidBottomPadding: false_をScaffoldに追加します

    _Scaffold(
     resizeToAvoidBottomPadding: false,
     body: ...)
    _
  2. FilstList(searchtext: _text,)scrollableView内に配置します(SingleChildScrollViewListViewなど)

resizeToAvoidBottomInsetを使用する必要があります

Scaffold(
  resizeToAvoidBottomInset: false, // set it to false
  ... 
)

オーバーフローエラーに問題がある場合は、SingleChildScrollViewを使用してください。

Scaffold(
  resizeToAvoidBottomInset: false, // set it to false
  body: SingleChildScrollView(child: YourBody()),
)
2
CopsOnRoad

スカフォールドでresizeToAvoidBottomPaddingをfalseに設定します。

  Scaffold(
 resizeToAvoidBottomPadding: false, 

より良い解決策である更新:列を削除し、代わりにListView

小さいデバイスでこのアプリを実行すると、ボトムアイテムが表示画面から消えて非表示になり、アプリユーザーにとっては問題になるからです。

Scaffoldボディの親としてScaffoldプロパティ「resizeToAvoidBottomPadding:false」および「SingleChildScrollView」を使用します。

  class RegisterApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Registration Page",
      home: Scaffold(
          resizeToAvoidBottomPadding: false,
          appBar: AppBar(
            title: Text("Registration Page"),
          ),
          body: SingleChildScrollView(
            child: RegisterUser(),
          )),
    );
  }
}

これで問題が解決します。

0
Dhanaji Yadav