如何使用flutter

时间:2016-12-13 19:20:34

标签: dart flutter

我想知道如何在flutter app中共享文件?

我看到了一些使用Intent和mojo的旧引用,但似乎不再存在。这似乎是我们应该能够以跨平台方式处理的标准功能(显然ios与android之间存在一些差异)。

目前共享文件的最佳做法是什么(例如通过电子邮件)?我能接受的最接近的是UrlLauncher,我可以想象它可以用来为我想要共享的文件启动一个处理程序,但这似乎是一个延伸。

7 个答案:

答案 0 :(得分:5)

目前没有内置方法可以做到这一点。正如上面提到的Seth Ladd,https://github.com/flutter/flutter/issues/7111正在跟踪这一过程。

目前,您必须使用Objective {C或Java编写必要的共享代码,并使用https://flutter.io/platform-services中记录的https://github.com/flutter/flutter/tree/master/examples/hello_services中显示的平台服务模型从Dart中调用它。< / p>

答案 1 :(得分:3)

对于希望 反向分享 的用户,或者换句话说,让其他应用与您的flutter应用分享数据,请查看{ {3}}。

感谢GünterZöchbauer在扑腾的Gitter频道上!

这是我发现的最接近问题的“分享”某个应用程序的问题,对于这个特定用例似乎没有任何问题,因此这里的答案

答案 2 :(得分:2)

对于仍然发现此问题的任何人,您现在可以与共享插件共享内容:https://pub.dartlang.org/packages/share

编辑:此插件仅支持文本/链接共享,这不足以直接共享文件。问题https://github.com/flutter/flutter/issues/16743https://github.com/flutter/flutter/issues/19607直接在flutter中跟踪文件共享。

答案 3 :(得分:2)

我发布了这个回复,因为接受的答案实际上没有回答这个问题。

使用flutter-share from this github repo您只需将其作为依赖项添加即可共享文件,导入它,然后使用命名的构造函数文件实例化Share类,如下所示:Share.file(path: <String>, mimeType: ShareType, title: , text: );其中mimeType,title和text是可选的,然后在其上调用share。

它完全适用于Android,IOS部分目前正在开发以匹配Android部分(目前只有plainText共享)。

答案 4 :(得分:2)

您可以使用EsysFlutterShare Plugin。在1.0.0版中,您可以共享任何喜欢的文件,并且可以在iOS和Android上共享文件。

只需将其放在您的pubspec.yaml中:

dependencies:
  esys_flutter_share: ^1.0.0

导入lib:

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类型。

答案 5 :(得分:0)

我将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");

}

答案 6 :(得分:0)

Flutter刚刚接受了很长时间的PR,Share plugin现在也可以共享文件!

例如:

Share.shareFiles(['${directory.path}/image.jpg'], text: 'Great picture');
Share.shareFiles(['${directory.path}/image1.jpg', '${directory.path}/image2.jpg']);