我尝试构建一个聊天应用程序,其中“新消息”屏幕包含收件人和消息。我希望TextField填满屏幕上的剩余空间。就像HTML中的Textarea。
maxLines
增加到一个较大的数字,这会导致使用“ float 操作按钮”导致像素溢出错误。 Expanded
小部件中。 这是我当前的布局结构:
body: new Column(
children: <Widget>[
new ListTile(
dense: false,
title: new Text("Alex XYZ",
//...
),
Divider(),
new TextField(
decoration: InputDecoration(hintText: "Insert your message",),
scrollPadding: EdgeInsets.all(20.0),
autofocus: true,
)
],
),
使用上面代码中的TextField,我什至不能写多行。如果添加maxLines:2我可以按Enter键向下移动,但这看起来并不干净,您无法在该区域滚动。
我希望有人能帮助我将其扩展到整个屏幕。
最好的问候亚历克斯!
最佳答案
现在,您可以使用maxline 99999,因为如果我们通过,则flutter中已经存在开放问题
maxline中的double.infinity.toInt()用于无限行。
因此,要创建具有滚动功能的多行textview,可以将maxline 99999与SingleChildScrollView一起使用
小部件如下。它将允许您滚动以及maxline。
如果您使用以下示例,它也将适合屏幕显示:
return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(widget.title),
),
body: Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(hintText: "Insert your message",),
scrollPadding: EdgeInsets.all(20.0),
keyboardType: TextInputType.multiline,
maxLines: 99999,
autofocus: true,)
],
),
),
),
resizeToAvoidBottomPadding: true,
);