我想知道如何在颤振应用程序中共享文件?
我看到了一些关于将 Intents 与 mojo 结合使用的旧参考,但似乎不再存在。这似乎是我们应该能够以跨平台方式处理的标准功能(显然 ios 和 android 之间存在一些差异)。
当前共享文件(例如通过电子邮件)的最佳做法是什么?我能做的最接近的事情是 UrlLauncher,我可以想象用它来为我想要共享的文件启动处理程序,但这似乎有点牵强。
您可以使用EsysFlutterShare 插件。在 1.0.0 版本中,您可以共享您喜欢的任何文件,并且它可以在 iOS 和 Android 上运行。
把它放在你的 pubspec.yaml 中:
dependencies:
esys_flutter_share: ^1.0.0
导入库:
import 'package:esys_flutter_share/esys_flutter_share.dart';
共享文件:
final ByteData bytes = await rootBundle.load('assets/image1.png');
await Share.file('esys image', 'esys.png', bytes.buffer.asUint8List(), 'image/png');
您需要提供标题、文件名、文件字节和 mime 类型。
我使用share_extend与path_provider结合来共享音频文件,并且效果很好。
void share() async {
Directory dir = await getApplicationDocumentsDirectory();
File testFile = new File("${dir.path}/sound.m4a");
if (!await testFile.exists()) {
await testFile.create(recursive: true);
testFile.writeAsStringSync("test for share documents file");
}
ShareExtend.share(testFile.path, "file");
}
目前没有内置的方法可以做到这一点。正如上面提到的 Seth Ladd,https://github.com/flutter/flutter/issues/7111正在跟踪使这更容易。
现在,你必须用 Objective-C 或 Java 编写必要的共享代码,并使用 https://flutter.io/platform-services 中记录的平台服务模型从你的 Dart 调用它,并显示在https:// github.com/flutter/flutter/tree/master/examples/hello_services。
对于任何希望反向共享的人,或者换句话说,让其他应用程序将数据共享到您的 Flutter 应用程序,请查看https://flutter.io/flutter-for-android/#how-do-i-handle-incoming-来自外部应用程序的意图。
感谢 Flutter Gitter 频道上的 Günter Zöchbauer!
这是我发现的最接近“分享”某些东西到颤振应用程序的问题,对于这个特定的用例似乎没有 SO 问题,因此这个答案在这里
Flutter 刚刚接受了好久的 PR,Share 插件现在也可以分享文件了!
前任:
Share.shareFiles(['${directory.path}/image.jpg'], text: 'Great picture');
Share.shareFiles(['${directory.path}/image1.jpg', '${directory.path}/image2.jpg']);
我发布了这个回复,因为接受的答案实际上并没有回答这个问题。
使用来自这个 github repo 的flutter-share,您可以通过将其添加为依赖项来共享文件,导入它,然后使用命名的构造函数文件实例化 Share 类,如下所示:Share.file(path: <String>, mimeType: ShareType, title: , text: );
其中 mimeType、title 和 text 是可选的,然后调用 share on它。
它完全适用于 Android,目前正在开发 IOS 部分以匹配 Android 部分(目前只有纯文本共享)。
现在,最好的方法是使用share_plus包
List<String> paths = [filePath];
await Share.shareFiles(
paths,
subject: 'subj',
text: 'text',
);
对于仍然发现此问题的任何人,您现在可以使用共享插件分享一些内容:https ://pub.dartlang.org/packages/share
编辑:此插件仅支持文本/链接共享,不足以直接共享文件。问题https://github.com/flutter/flutter/issues/16743和https://github.com/flutter/flutter/issues/19607直接在 Flutter 中跟踪文件共享。