Kar*_*ård 3 mailto email-client dart flutter url-launcher
我的应用程序中有一个小链接,上面写着“向我们发送电子邮件”。当您单击它时,我希望打开默认电子邮件应用程序,并向我们的电子邮件地址发送一封电子邮件。launch()我曾经用包中的方法让它完全做到这一点,url_launcher如下所示:
import 'package:url_launcher/url_launcher.dart' as url;
Future<bool?> pressedSendUsEmail() async {
bool? success;
try {
print('Pressed Send us an e-mail...');
success = await url.launch('mailto:our.email@gmail.com'); // Works like a charm...
print('success is $success');
} catch (e) {
print('Caught an error in Send us an e-mail!');
print('e is: ${e.toString()}');
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
但现在,我收到一条警告,说launch()已弃用!我应该用它launchUrl()来代替。但launchUrl()不接受 String 参数,它接受 Uri 参数...并且我不知道如何正确编写此 Uri,以便它执行我想要的操作!我试过:
success = await url.launchUrl(Uri(path: 'mailto:our.email@gmail.com'));
Run Code Online (Sandbox Code Playgroud)
但这会引发错误,因为它无法解释“:”字符。我试过了:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
);
Run Code Online (Sandbox Code Playgroud)
这会启动链接,但在浏览器中......并且不会启动发送到预先打印的地址的电子邮件。我尝试添加:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
mode: url.LaunchMode.externalApplication,
);
Run Code Online (Sandbox Code Playgroud)
这让我可以选择使用哪个外部应用程序打开链接,但不幸的是,只列出了浏览器应用程序......而不是电子邮件应用程序!
我应该如何编写我的命令才能使launchUrl()刚刚做的事情与旧的完全一样launch()?非常感谢您的帮助!
编辑:
在下面这个问题得到满意的回答之后,我现在有了一个后续问题:
在应用程序的另一部分,有一个地方可以让用户输入链接,我曾经用launch()...启动它,还有一种简单的方法吗?
因为在这种情况下,我不知道链接是 http 还是 https 或者确实是 mailto:!...而且我宁愿不必编写大量代码来找出答案!我只是希望它尝试完全按照编写的方式启动链接,只要编写正确,它就会起作用。
尝试这个:
void _sendEmail(){
final Uri emailLaunchUri = Uri(
scheme: 'mailto',
path: 'our.email@gmail.com',
queryParameters: {
'subject': 'CallOut user Profile',
'body': widget.userModel?.username ?? ''
},
);
launchUrl(emailLaunchUri);
}
Run Code Online (Sandbox Code Playgroud)
当其他答案已经内置时,不需要其他答案的无意义的冗余子例程Uri!
void _sendEmail(){
final Uri emailLaunchUri = Uri(
scheme: 'mailto',
path: 'our.email@gmail.com',
queryParameters: {
'subject': 'CallOut user Profile',
'body': widget.userModel?.username ?? ''
},
);
launchUrl(emailLaunchUri);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |