【问题标题】:How can i use textfield widget in a string?如何在字符串中使用文本字段小部件?
【发布时间】:2022-01-12 12:08:47
【问题描述】:

我想在字符串中使用 textfield 或 textformfield。 例如:美丽的____扑动。 字符串值可以有多个单词。 我该怎么做?

谢谢。

【问题讨论】:

    标签: flutter dart mobile flutter-layout


    【解决方案1】:

    我认为RichText 小部件将提供最佳解决方案。不幸的是,我只能让它与一行文本一起工作。一旦输入的文本变得太长,它就会强制 TextField 单独一行。

        RichText( 
          text: const TextSpan(
            text: 'Beautiful ',
            children: [
              WidgetSpan(
                child: IntrinsicWidth(
                  child: TextField(
                      decoration: InputDecoration(
                        contentPadding: EdgeInsets.only(bottom: 3.0),
                        isDense: true,
                        hintText: '     ',
                      ),
                      keyboardType: TextInputType.multiline,
                      maxLines: null),
                ),
              ),
              TextSpan(text: ' flutter'),
            ],
          ),
        )
    

    注意:已编辑以使用 TextField 而不是 TextSpan 小部件回答问题

    【讨论】:

    • 感谢您的回答。在我的情况下,myString 应该是一个文本字段小部件。我想单击文本字段并在文本小部件中写一些东西。
    • 查看更新后的答案。
    • 另外,这可能会有所帮助stackoverflow.com/a/65233481/11920147
    【解决方案2】:

    你可以像这样使用Row

    Row(
      children: [
        Expanded(
          child: Text(
            '..',
            overflow: TextOverflow.visible,
            maxLines: 1,
          ),
        ),
        Expanded(child: TextFormField(/*...*/)),
        Expanded(
          child: Text(
            '..',
            overflow: TextOverflow.visible,
            maxLines: 1,
          ),
        ),
      ],
    ),
    

    【讨论】:

    • 感谢您的回答。字符串值可以有 30 个字或更多。所以这个值将是多行的。我想在此字符串值中使用文本字段更改特定单词。该单词可以是String值中的任意单词。
    【解决方案3】:

    好吧,我猜我错了。我评论说这是不可能的,但只是我不知道适合这项工作的小部件,即WidgetSpan。 扩展 @developer extraordinare said,您可以将 WidgetSpan 放在 TextSpan 树中的 RichText 小部件内,如下所示:

    @override
      Widget build(BuildContext context) {
        return Material(
            child: RichText(
              text: TextSpan(
                text: 'Beautiful',
                children: [
                  WidgetSpan(child: TextFormField()),
                  const TextSpan(text: ' flutter'),
                ],
              ),
            ),
          
        );
      }
    

    结果可能不如你想的那么好,但它可以完成工作。您可能只需要摆弄SizedBox、约束等,以使可编辑的TextFormField 很好地适合文本。

    【讨论】:

    • 那个尴尬的时刻,你读错了问题并给出了错误的答案,但你仍然足够接近帮助其他人给出正确的答案。
    • 非常感谢您的回答
    • @malozyali-Yalçın 如果我的回答解决了您的问题,您能否将其标记为正确答案?谢谢
    • 它没有解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2019-05-17
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2016-06-15
    • 2019-11-19
    相关资源
    最近更新 更多