【发布时间】:2022-01-12 12:08:47
【问题描述】:
我想在字符串中使用 textfield 或 textformfield。 例如:美丽的____扑动。 字符串值可以有多个单词。 我该怎么做?
谢谢。
【问题讨论】:
标签: flutter dart mobile flutter-layout
我想在字符串中使用 textfield 或 textformfield。 例如:美丽的____扑动。 字符串值可以有多个单词。 我该怎么做?
谢谢。
【问题讨论】:
标签: flutter dart mobile flutter-layout
我认为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 小部件回答问题
【讨论】:
你可以像这样使用Row
Row(
children: [
Expanded(
child: Text(
'..',
overflow: TextOverflow.visible,
maxLines: 1,
),
),
Expanded(child: TextFormField(/*...*/)),
Expanded(
child: Text(
'..',
overflow: TextOverflow.visible,
maxLines: 1,
),
),
],
),
【讨论】:
好吧,我猜我错了。我评论说这是不可能的,但只是我不知道适合这项工作的小部件,即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 很好地适合文本。
【讨论】: