有没有办法动态改变 Flutter TextField 的 maxLines?

Posted

技术标签:

【中文标题】有没有办法动态改变 Flutter TextField 的 maxLines?【英文标题】:Is there a way to dynamically change the Flutter TextField's maxLines? 【发布时间】:2018-03-27 10:07:12 【问题描述】:

我有一个这样的文本字段:

new Flexible(
    fit: FlexFit.loose,
    child: new Container(
        alignment: FractionalOffset.topLeft,
        child: new TextField(
            decoration: new InputDecoration(
                  hintText: 'Add a note',
            ),
            maxLines: 1,
            onChanged: (value) => _showSaveOptions(value),
        ),
    ),
),

我想让我的 TextField 以 maxLines 开始设置为 1,但是当我键入时,我希望 maxLines 增加,以便所有文本都保留在页面上并且我没有向上滚动。但是,我也不想一开始就将maxLines 设置为 5 或 10,因为空的 TextField 会占用更多必要的空间。我想要实现的行为的一个示例是在 Google Forms 中的 Long Answer Text 选项中,它以一行开头: 并在我键入时扩展:

我考虑过将maxLines 设置为一个计数器,每次用户点击换行时都会递增,但我如何确定用户何时填满了一行?

【问题讨论】:

【参考方案1】:

Flutter 在 TextField 中的多行支持滞后。在提出 issue 之后,0.0.16 版本中添加了多行功能。

确保将 Flutter 升级到最新版本。要获取多行 TextField,请使用:

new TextField(
    maxLines: null,
    keyboardType: TextInputType.multiline,
) 

希望这有帮助!

【讨论】:

这太好了,谢谢!事实证明,由于这个issue,我现在无法将 maxLines 设置为 null,但我希望它一旦解决就可以工作。 这看起来只是一个文本文件。不像 textarea。【参考方案2】:

它看起来像一个文本区域。你可以试试 ma​​xLines

最大线数:8

TextField(
        maxLines: 8,
        decoration: InputDecoration(hintText: "Enter your text here", border: OutlineInputBorder(),
        labelText: 'Post Body'),
    ),

【讨论】:

以上是关于有没有办法动态改变 Flutter TextField 的 maxLines?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法动态改变每帧的情节动画轴比例?

Flutter:有啥办法可以改变DataTable的行线颜色?

有没有办法将动态加载的图像文件合并到一个图像文件中?

Flutter 换屏回调

Flutter 获取 Object 属性名称

有没有办法改变按钮后面的背景颜色(button.setBackgroundResource)