我有一个文本字段,需要有如下所示的多行,以便文本换行,但它占用了maxLines中定义的所有行的空间.我希望能够让它看起来像1行,并随着文本的包装而扩展.任何关于如何做到这一点的想法都是颤抖的?
new TextField(
decoration: const InputDecoration(
hintText: 'Reply',
labelText: 'Reply:',
),
autofocus: false,
focusNode: _focusnode,
maxLines: 1,
controller: _newreplycontroller,
keyboardType: TextInputType.text,
),
Run Code Online (Sandbox Code Playgroud)
Dan*_*eld 30
设置maxLines为null,它将自动垂直增长.
它的记录(但不完全清楚的)这里(编辑:我创建了一个PR更新此,我应该已经做了,开始对这个问题).为了解决这个问题,我最终查看了代码TextField及其超类(es),看看如果设置为null将会是什么行为.
所以你的代码应该如下:
new TextField(
decoration: const InputDecoration(
hintText: 'Reply',
labelText: 'Reply:',
),
autofocus: false,
focusNode: _focusnode,
maxLines: null,
controller: _newreplycontroller,
keyboardType: TextInputType.text,
),
Run Code Online (Sandbox Code Playgroud)
如果你试图水平自动增长,你可能不应该 - 至少不是基于文本内容.但我想你想让它垂直自动增长.
小智 25
使用这个应该可以解决问题:
keyboardType: TextInputType.multiline,
minLines: 1,
maxLines: 20,
maxLength: 1000,
Run Code Online (Sandbox Code Playgroud)
添加 minLines 和 MaxLines 对于获得所需的行为非常重要,而 maxLength 则是一种享受!
也许为时已晚,但迟到总比不到好!
Kyl*_*enn 10
接受的答案对于垂直增长非常有效。如果您希望TextField从小处开始并随着用户键入而水平扩展,您可以执行以下操作:
IntrinsicWidth(
child: TextField(...
),
Run Code Online (Sandbox Code Playgroud)
就我而言,我希望它位于屏幕中心(水平),所以我这样做了:
Center(
child: IntrinsicWidth(
child: TextField()
)
)
Run Code Online (Sandbox Code Playgroud)
如第一个答案所示,将 maxLines 设置为 null 即可解决问题。然而,这将允许文本字段无限增长。
要获得更多控制,请根据需要将 minLines 设置为 1 和 maxLines。希望这可以帮助!
代码示例:TextField(minLines:1,maxLines:8)
| 归档时间: |
|
| 查看次数: |
3093 次 |
| 最近记录: |