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

Dart拼接含&的字符串异常:仅保留&前内容,求解决

问题分析与解决方案

核心原因

你看到的截断并非代码拼接失败,而是展示环境(如Web视图、FlutterFlow预览面板)将&解析为HTML实体的起始标记,导致&后的内容被当作未闭合的实体而隐藏。实际上代码拼接出的字符串本身是完整的,你可以通过print()或debugPrint()输出到控制台验证——控制台不会解析HTML实体,能看到完整结果。

解决方案:用Uri类规范构建URL

手动拼接URL容易出现这类解析问题,还可能忽略参数的URL编码(比如参数含特殊字符时出错),推荐用Dart内置的Uri类构建:

示例1:基础拼接场景

var someVariable = 'Hello';
var someOtherVariable = 'World';
var uri = Uri(
  host: 'somedomain',
  queryParameters: {
    'x': someVariable,
    'y': someOtherVariable,
  },
);
var str = uri.toString();
// 控制台输出完整结果:somedomain?x=Hello&y=World

示例2:FlutterFlow中的实际代码修改

Future<String> getEventUrlFromReference(BuildContext context, DocumentReference? eventReference) async {
  var userId = currentUser?.uid as String;
  var uri = Uri(
    scheme: 'https',
    host: 'somedomain.com',
    path: '/event',
    queryParameters: {
      'eventReference': eventReference?.id,
      'invitedBy': userId,
    },
  );
  return uri.toString();
}

额外说明

Uri类会自动处理URL的编码和格式规范,即使参数包含空格、中文等特殊字符也能正确生成合法URL,同时避免&被HTML解析器误处理的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:51:38