将 WidgetSpan 添加到 TextField 会导致 'dimensions != null': is not true'
Posted
技术标签:
【中文标题】将 WidgetSpan 添加到 TextField 会导致 \'dimensions != null\': is not true\'【英文标题】:Adding WidgetSpan to TextField results in 'dimensions != null': is not true'将 WidgetSpan 添加到 TextField 会导致 'dimensions != null': is not true' 【发布时间】:2021-10-23 05:12:18 【问题描述】:我一直在尝试将 WidgetSpan 添加到 TextField(通过 TextEditingController 中的 buildTextSpan())并遇到崩溃:“断言失败:[..]:'dimensions != null': is not true”。 在尝试找到解决方案时,我只遇到过有类似问题的人,但无法找到解决方案。 我的代码(和问题)类似于在问题 https://github.com/flutter/flutter/issues/30688#issuecomment-870034058 上发布的评论。
@override
TextSpan buildTextSpan(required BuildContext context, TextStyle? style, required bool withComposing)
final atIndex = text.indexOf('@');
var spans = <InlineSpan>[];
if (atIndex != -1)
spans.add(TextSpan(text: text.substring(0, atIndex)));
spans.add(
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Card(
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Text('@'),
),
),
),
);
spans.add(TextSpan(text: text.substring(1 + atIndex)));
else
spans.add(TextSpan(text: text));
return TextSpan(
children: spans,
);
对于这个失败的断言是否有任何修复/解决方法?
【问题讨论】:
这有帮助吗? github.com/flutter/flutter/issues/49883 我也看到了这个问题,但类似于该问题的最后两个 cmets,我不知道如何从 TextEditingController 设置 PlaceholderDimensions 【参考方案1】:原来这个功能还没有进入稳定频道。使用主通道“修复”了这个问题,使提供代码 sn-p 无需修改即可运行。
有关更改频道的信息,请参阅:https://***.com/a/61157330/10832540
【讨论】:
请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。以上是关于将 WidgetSpan 添加到 TextField 会导致 'dimensions != null': is not true'的主要内容,如果未能解决你的问题,请参考以下文章
将文本移动到 UITableViewCell 中的下一个文本字段