You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将TextSpan列表转换为单一文本,可直接传入TextSpan的text属性

解决TextSpan列表转单文本字符串的方案

分两种场景实现:

场景1:TextSpan无嵌套子节点

如果你的listTextSpan里的所有TextSpan都没有嵌套children,直接用map遍历拼接即可:

List<TextSpan> listTextSpan = [TextSpan(text: "Hello"), TextSpan(text: "World")];
String singleText = listTextSpan.map((span) => span.text ?? '').join();

拼接后得到的singleText值就是HelloWorld,可以直接传入TextSpan的text参数使用。

场景2:TextSpan存在嵌套子节点

如果列表里的TextSpan可能嵌套了子TextSpan,就需要用递归的方式提取所有层级的文本:

// 递归提取所有TextSpan的文本
String extractAllText(List<TextSpan> spans) {
  final buffer = StringBuffer();
  for (final span in spans) {
    if (span.text != null) buffer.write(span.text);
    if (span.children?.isNotEmpty == true) {
      buffer.write(extractAllText(span.children!));
    }
  }
  return buffer.toString();
}

// 调用获取合并后的文本
String singleText = extractAllText(listTextSpan);

注意:该转换仅会合并纯文本内容,原有每个TextSpan单独配置的样式(颜色、字号、字重等)都会丢失,如果需要保留多样式效果,仍然推荐直接将列表传入TextSpan的children属性使用。

内容的提问来源于stack exchange,提问作者Alex Maina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:45:03