首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Dart Uri用"+“替换空格?

为什么Dart Uri用"+“替换空格?
EN

Stack Overflow用户
提问于 2020-08-09 15:31:45
回答 2查看 1K关注 0票数 3

我正在使用flutter的Urilauncher插件打开邮件客户端。这是我的代码

代码语言:javascript
复制
final Uri _emailLaunchUri = Uri(
                  scheme: 'mailto',
                  path: 'info@moops.in',
                  queryParameters: {'subject': 'Feedback for Moops'});

await launch(_emailLaunchUri.toString());

然而,在电子邮件客户端。主题中的空格被"+“符号替换。我已经尝试用%20和0替换空格,但随后空格被替换为这些字符。有没有其他特殊的字符,我应该用来避免使用+符号,而用空格代替。或者是一种逃离太空的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-09 15:57:50

你可以使用字符串来解决这个问题,我在下面写了一个小函数来解决这个问题:

代码语言:javascript
复制
String getUrl(String scheme, String path, Map<String, String> queryParameters) {
  String url = '$scheme:$path?';

  queryParameters.forEach((String k, String v){
    url += '$k=$v&';
  });

  return url;
}

然后你可以这样叫它:

代码语言:javascript
复制
await launch(getUrl('mailto', 'info@moops.in', {'subject': 'Feedback for Moops'}));
票数 2
EN

Stack Overflow用户

发布于 2020-11-19 22:35:44

我找到了一个绕过这个问题的解决方案。

代码语言:javascript
复制
    Uri _emailLaunchUri = Uri(
         scheme: 'mailto',
         path: 'example@example.com',
         queryParameters: {
         'subject': 'Example Subject & Symbols are allowed!'
         }
    });
              
    launch(
       _emailLaunchUri.toString().replaceAll("+", "%20")
    );

全部替换功能将所有+符号替换为代表空格的%20,这完美地解决了这个问题。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63323669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档