我正在使用 Urilauncher 插件来打开邮件客户端。这是我的代码
final Uri _emailLaunchUri = Uri(
scheme: 'mailto',
path: 'info@moops.in',
queryParameters: {'subject': 'Feedback for Moops'});
await launch(_emailLaunchUri.toString());
Run Code Online (Sandbox Code Playgroud)
但是,在电子邮件客户端中。主题中的空格被“+”符号取代。我已经尝试用 %20 替换空格,然后空格被这些字符替换。我是否应该使用其他特殊字符来避免使用 + 符号并使用空格代替。或者也许是一种逃离空间的方法。
我找到了绕过这个问题的解决方案。
Uri _emailLaunchUri = Uri(
scheme: 'mailto',
path: 'example@example.com',
queryParameters: {
'subject': 'Example Subject & Symbols are allowed!'
}
});
launch(
_emailLaunchUri.toString().replaceAll("+", "%20")
);
Run Code Online (Sandbox Code Playgroud)
replace all 函数用代表空格的 %20 替换所有 + 符号,这完美地解决了这个问题。
您可以使用字符串文字来解决这个问题,我在下面编写了一个小函数来处理这个问题:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样称呼它:
await launch(getUrl('mailto', 'info@moops.in', {'subject': 'Feedback for Moops'}));
Run Code Online (Sandbox Code Playgroud)