我的应用程序中有一个小链接,上面写着"向我们发送电子邮件"。当你点击它时,我希望打开默认的电子邮件应用程序,并向我们的电子邮件地址发送一封电子邮件。我曾经使用url_launcher
包中的launch()
方法使其完全做到这一点,如下所示:
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;
}
但是现在,我收到一个警告,说launch()
被弃用了!我应该使用launchUrl()
来代替。但是launchUrl()
不接受String参数,它接受Uri参数...而且我不知道如何正确地编写这个Uri,以便它能做我想做的事情!我尝试了:
success = await url.launchUrl(Uri(path: 'mailto:our.email@gmail.com'));
但这会抛出一个错误,因为它无法解释":"字符。我尝试过:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
);
这会启动链接,但在浏览器中...它不会启动一封电子邮件到预先打印的地址。我试着添加:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
mode: url.LaunchMode.externalApplication,
);
而这给了我一个选择,用哪个外部应用程序打开链接,但不幸的是,只有浏览器应用程序列出...而不是电子邮件应用程序!
我应该如何编写我的命令,使launchUrl()
只做旧的launch()
所做的事情??非常感谢帮助!
编辑:
在下面满意地回答了这个问题之后,我现在有一个后续qn:
在应用程序的另一个部分,有一个地方,用户可以输入链接,我曾经用launch()
启动它...有没有一个简单的方法来做到这一点,以及?
因为在这种情况下,我不知道链接是http还是https,或者是mailto:!......我不想写太多的代码来找出答案!我只想让它尝试启动链接,只要它写得正确,它就会工作。
2条答案
按热度按时间sdnqo3pr1#
试试这个:
iyfamqjs2#
当另一个答案已经内置到
Uri
中时,就不需要另一个答案的无意义的冗余子例程了!}