当前位置: 首页 > 知识库问答 >
问题:

颤振中的多行文本场

崔棋
2023-03-14

这听起来可能很容易,但是我们如何在颤振中做多行可编辑的文本字段?文本字段只适用于单行。

编辑:有些精度,因为它似乎不清楚。虽然可以将“多行”设置为虚拟包装文本内容,但它仍然不是多行。它是一行显示为多行。如果你想做这样的事情,你就不能。因为你没有权限进入ENTER按钮。没有回车键意味着没有多行。

共有3个答案

佟阳飙
2023-03-14

虽然其他人已经提到可以使用键盘类型“TextInputType.multiline”,但我想添加我的TextField实现,该实现在输入新行时自动调整其高度,因为通常需要模仿WhatsApp和类似应用程序的输入行为。

为此,每次文本更改时,我都在分析输入中“\n”聊天者的数量。这似乎是一种过度杀戮,但不幸的是,到目前为止,我没有找到更好的可能性在Flutter中实现这种beahivour,即使在旧的智能手机上,我也没有注意到任何性能问题。

class _MyScreenState extends State<MyScreen> {
  double _inputHeight = 50;
  final TextEditingController _textEditingController = TextEditingController();

  @override
  void initState() {
    super.initState();
    _textEditingController.addListener(_checkInputHeight);
  }

  @override
  void dispose() {
    _textEditingController.dispose();
    super.dispose();
  }

  void _checkInputHeight() async {
    int count = _textEditingController.text.split('\n').length;

    if (count == 0 && _inputHeight == 50.0) {
      return;
    }
    if (count <= 5) {  // use a maximum height of 6 rows 
    // height values can be adapted based on the font size
      var newHeight = count == 0 ? 50.0 : 28.0 + (count * 18.0);
      setState(() {
        _inputHeight = newHeight;
      });
    }
  }


  // ... build method here
  TextField(
    controller: _textEditingController,
    textInputAction: TextInputAction.newline,
    keyboardType: TextInputType.multiline,
    maxLines: null,
  )
谢嘉
2023-03-14

如果希望文本字段适应用户输入,请执行以下操作:

TextField(
    keyboardType: TextInputType.multiline,
    minLines: 1,//Normal textInputField will be displayed
    maxLines: 5,// when user presses enter it will adapt to it
    );

在这里将最大线设置为您想要的任何内容,您就可以开始了。在我看来,将最大线设置为null不是一个好的选择,我们应该将其设置为一些值。

章博耘
2023-03-14

要使用自动换行,只需将maxLines设置为null

dart prettyprint-override">TextField(
  keyboardType: TextInputType.multiline,
  maxLines: null,
)

如果maxLines属性为null,则对行数没有限制,并且会启用换行。

 类似资料:
  • Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart

  • 我有一个文本文件(.txt),我想成为以后可以扫描的资源。 在pubspec.yaml,我已经确保: 存在。该文件位于我创建的文件夹中,与和处于同一级别 我试图从自定义类读取文件,而不是小部件。 根据文档,我将使用此导入: 然后开始这样读: 要获得实际数据,请执行以下操作: 但是,当我使用

  • 我向上看了看这里和酒吧。dev和flatter文档,但找不到(或者找不到我的查询)这个简单任务的任何解决方案。 我想显示一个,其字母从上到下排列,同时保持字母方向的默认值。因此,旋转的将不起作用。 我期望的结果是: 此外,我还需要将包装到下一行(本例中为列),需要一个高度参数来限制每列从上到下的字母数。 如果最后一部分太难实现,我愿意接受单列解决方案的想法。

  • 我有这个问题,索门能帮我吗?因为seet依赖于flutter_localizations,而SDK依赖于intl0.17.0,所以intl0.17.0是必需的。因此,由于seet依赖于intl^0.16.0,版本解决失败。pub get失败(1;因此,由于seet依赖于intl^0.16.0,版本解决失败。)

  • 我可以使用“startAfter”和“limit”进行分页,但它有错误。 例如,在Firestore DB中,我有7条记录: 当页面大小为5时,第一页就可以了,因为我使用了: 它给了我1-5项。 当它加载第二页时,我使用了: 问题是第二页结果只有item7,item6消失了。“开始”也有同样的问题。 真希望它有“抵消”功能,有人有解决办法吗?

  • 我想在左边部分显示个人资料图像,中间部分显示名称和公司(一个在另一个下面),右边部分显示列表图块内的评论和评级。我能够正确显示图像,评论和评级,但文本不显示。我想实现这一点: 图片和评级之间的空白是我想要显示文本的地方(姓名和公司,一个在另一个下面)。不知道我在这里错过了什么。 下面的代码片段: 在我看来,这似乎是一个返回