Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在带有Flutter的iPhone上打开默认电子邮件应用程序?_Ios_Email_Dart_Flutter - Fatal编程技术网

Ios 如何在带有Flutter的iPhone上打开默认电子邮件应用程序?

Ios 如何在带有Flutter的iPhone上打开默认电子邮件应用程序?,ios,email,dart,flutter,Ios,Email,Dart,Flutter,我想制作一个flatter应用程序,其中一个要求是在Android或iPhone设备上打开本机电子邮件客户端。我不想创建新的电子邮件,只需打开电子邮件应用程序。如果可能的话,我希望能够用平台通用代码打开电子邮件客户端,如果没有,我想知道iOS端需要什么。我不寻找发送电子邮件的意图,因为我知道有一个插件在颤振为这一点。作为一名Android开发人员,我相信我知道如果必须这样做的话,如何从Flatter调用意图来实现隐含的意图,但我不熟悉iOS。插件可以做到这一点 mailto:?主题=&body=

我想制作一个flatter应用程序,其中一个要求是在Android或iPhone设备上打开本机电子邮件客户端。我不想创建新的电子邮件,只需打开电子邮件应用程序。如果可能的话,我希望能够用平台通用代码打开电子邮件客户端,如果没有,我想知道iOS端需要什么。我不寻找发送电子邮件的意图,因为我知道有一个插件在颤振为这一点。作为一名Android开发人员,我相信我知道如果必须这样做的话,如何从Flatter调用意图来实现隐含的意图,但我不熟悉iOS。

插件可以做到这一点

mailto:?主题=&body=
在默认电子邮件应用程序中创建电子邮件收件人


另请参见

您需要两个插件:
android\u intent
url\u启动器

if (Platform.isAndroid) {
  AndroidIntent intent = AndroidIntent(
    action: 'android.intent.action.MAIN',
    category: 'android.intent.category.APP_EMAIL',
  );
  intent.launch().catchError((e) {
    ;
  });
} else if (Platform.isIOS) {
  launch("message://").catchError((e){
    ;
  });
}
你可以用

范例

Email=Email(
致:['one@gmail.com,two@gmail.com'],
抄送:['foo@gmail.com'],
密件抄送:['bar@gmail.com'],
主题:'主题',
身体:“身体”
);
等待EmailLauncher.launch(电子邮件);
使用url\u启动器插件

电子邮件

setState(() {
  _launched = _openUrl('mailto:${sejpalbhargav67@gmail.com}'');
});

这个图书馆为我完美地解决了这个问题:。这个例子很好,api简单明了。

这个答案可能就是解决方案


我不想创建新的电子邮件,我只想打开默认的电子邮件应用程序。对不起,我不知道如何尝试
消息:
而不是
mailto:…
您可能需要使用
Uri.encodeFull('It not ok')
Uri.encodeComponent('It not ok'))
并传递结果值。@AlejandroIván这是iOS版的吗?op明确表示他不想发送电子邮件。库允许您在不发送电子邮件的情况下打开电子邮件应用程序。这将发送电子邮件,而不是op想要的。在安卓系统上,这将打开应用程序内部的电子邮件应用程序。要在新窗口中打开它,请添加:
flags:[Flag.Flag\u ACTIVITY\u new\u TASK]
AppAvailability是一个过时的插件,如果您使用它,它将在发布构建时生成。所以请避免使用这个插件
Future<void> _launched;

Future<void> _openUrl(String url) async {
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
}
setState(() {
  _launched = _openUrl('tel:${+917600896744}');
});
setState(() {
  _launched = _openUrl('mailto:${sejpalbhargav67@gmail.com}'');
});
void openEmailApp(BuildContext context){
    try{
        AppAvailability.launchApp(Platform.isIOS ? "message://" : "com.google.android.gm").then((_) {
                print("App Email launched!");
              }).catchError((err) {
                Scaffold.of(context).showSnackBar(SnackBar(
                    content: Text("App Email not found!")
                ));
                print(err);
              });
    } catch(e) {
      Scaffold.of(context).showSnackBar(SnackBar(content: Text("Email App not found!")));
    }
}