TextField
をnew 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,)
),
],
),
);
}
}
twoこの問題の解決策があります。
_resizeToAvoidBottomPadding: false
_をScaffold
に追加します
_Scaffold(
resizeToAvoidBottomPadding: false,
body: ...)
_
FilstList(searchtext: _text,)
をscrollableView
内に配置します(SingleChildScrollView
やListView
など)resizeToAvoidBottomInset
を使用する必要があります
Scaffold(
resizeToAvoidBottomInset: false, // set it to false
...
)
オーバーフローエラーに問題がある場合は、SingleChildScrollView
を使用してください。
Scaffold(
resizeToAvoidBottomInset: false, // set it to false
body: SingleChildScrollView(child: YourBody()),
)
スカフォールドで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(),
)),
);
}
}
これで問題が解決します。