Dart 如何使用flatter共享文件

Dart 如何使用flatter共享文件,dart,flutter,Dart,Flutter,我想知道如何在Flitter应用程序中共享文件 我看到了一些关于使用意图的旧引用,但似乎不再存在。这似乎是一个我们应该能够以跨平台方式处理的标准功能(显然,ios和android之间存在一些差异) 当前共享文件(如通过电子邮件)的最佳做法是什么?我能做的最贴切的事情是UrlLauncher,我可以想象使用它为我想要共享的文件启动一个处理程序,但这似乎有点牵强。目前没有内置的方法来实现这一点。正如赛斯·拉德(Seth Ladd)在上文中提到的,追踪使这变得更容易 现在,您必须使用Objective

我想知道如何在Flitter应用程序中共享文件

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


当前共享文件(如通过电子邮件)的最佳做法是什么?我能做的最贴切的事情是UrlLauncher,我可以想象使用它为我想要共享的文件启动一个处理程序,但这似乎有点牵强。

目前没有内置的方法来实现这一点。正如赛斯·拉德(Seth Ladd)在上文中提到的,追踪使这变得更容易


现在,您必须使用Objective-C或Java编写必要的共享代码,并使用中记录的平台服务模型从Dart调用它。

对于仍发现此问题的任何人,您现在可以与共享插件共享一些内容:


编辑:此插件仅支持文本/链接共享,这不足以直接共享文件。问题和跟踪文件共享直接在颤振中进行。

对于希望反向共享的人,或者换句话说,让其他应用程序将数据共享到你的颤振应用程序,请查看

多亏了弗利特·吉特频道的甘特·佐克鲍尔


这是我发现的最接近于将某个东西“共享”到Flitter应用程序的问题,对于这个特定的用例,似乎没有这么一个问题,因此这个答案在这里

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

使用,您可以共享文件,只需将其作为依赖项添加、导入,然后使用命名的构造函数文件实例化共享类,如:
share.file(路径:,mimeType:ShareType,标题:,文本:)其中mimeType、title和text是可选的,然后对其调用share

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

我使用与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");
}

您可以使用。在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类型。

flatter刚刚接受了长时间的PR,现在也可以共享文件了

例:


谢谢你的邀请!我们正在跟踪这个问题,该问题现已关闭,但仅支持共享字符串。此新问题要求文件传输:。这并没有回答问题,OP特别询问了有关共享文件的问题,而此插件仅支持共享文本。它是否仅适用于资源中的文件?例如,我如何共享下载中的图片?Hi@Leonardorignaniese您有共享下载文件的解决方案吗?谢谢…请注意,esys_flatter_共享插件(1.0.2)的最新(也是最终?)版本。当我使用它时,我得到了一个异常:E/flatter(11283):[ERROR:flatter/lib/ui/ui_dart_state.cc(148)]未处理的异常:MissingPluginException(在channel com.zt.shareextend/share_-extend上找不到方法共享的实现)E/颤振(11283):#0 MethodChannel.invokeMethod(软件包:flatter/src/services/platform_channel.dart:314:7尝试将其添加到您的android清单文件中``这应该是公认的答案。它工作起来很有魅力!将最低sdk版本设置为19及其工作是否有人知道如何在共享扩展中发送文件列表我如何使用此软件包而不是使用“.jpg”共享pdf文件在我列出的示例中,在其末尾使用pdf+“.pdf”的名称
Share.shareFiles(['${directory.path}/yourPdf.pdf'],文本:“yourPdf!”);
Share.shareFiles(['${directory.path}/image.jpg'], text: 'Great picture');
Share.shareFiles(['${directory.path}/image1.jpg', '${directory.path}/image2.jpg']);