我为我的flutter web应用程序添加了通过电子邮件发送反馈的功能。这是我的代码:
static void launchEmail(String subjectLine) async {
const emailId = Constants.ARUDITO_EMAIL;
print('opening email app for uploading content');
String url = "mailto:$emailId?subject=$subjectLine";
if (kIsWeb) {
if (await webLauncher.UrlLauncherPlugin().canLaunch(url)) {
await webLauncher.UrlLauncherPlugin().launch(
url,
useWebView: true,
enableDomStorage: true,
enableJavaScript: true,
useSafariVC: true,
webOnlyWindowName: 'Arudito',
headers: null,
universalLinksOnly: false,
);
} else {
throw 'Could not open an email app';
}
} else {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not open an email app';
}
}
}
pubspec.yaml包括:
dependencies:
flutter:
sdk: flutter
url_launcher: ^5.4.2
url_launcher_web: ^0.1.3+1
此代码不会在web浏览器中启动电子邮件。它只打开一个新的选项卡。但是,它是在Windows中选择邮件应用程序时启动的。有人能告诉我这里出了什么问题吗?
我遇到了完全相同的问题。我在另一篇StackOverflow帖子中找到了一个有用的答案。
这里提到,如果您只是省略canLaunch
检查,而是将launch
包装在try-catch块中,那么它在Flutter Web上就可以工作。我刚试过,效果很好。
顺便说一句,url_launcher
包中还有一个全新的Link小部件,它可以创建适当的web链接(包括右键单击支持(。
我遇到了确切的问题。点击任何电子邮件链接都会打开一个新的空白标签。就这样。
我花了几个小时才弄明白。
在mac上打开Mail
应用程序,设置,常规,然后有一个默认电子邮件阅读器的选项。它选择了铬。把它改成一个真正的电子邮件客户端,现在就可以像预期的那样工作了。