Flutter 如何将应用程序中的语音文件(mpeg)共享到Flatter中的其他应用程序(如whatsapp)
我尝试了FlatterShare2.0.1 pluggin来共享语音文件,但没有成功(没有这样的文件)。您能解决这个问题吗?或者我如何将语音文件共享到其他应用程序?这是我的代码和错误截图Flutter 如何将应用程序中的语音文件(mpeg)共享到Flatter中的其他应用程序(如whatsapp),flutter,dart,share,sharefile,Flutter,Dart,Share,Sharefile,我尝试了FlatterShare2.0.1 pluggin来共享语音文件,但没有成功(没有这样的文件)。您能解决这个问题吗?或者我如何将语音文件共享到其他应用程序?这是我的代码和错误截图 如错误所述,assets/voices/pırt.mpeg不是操作系统上文件的有效路径。这是一项资产,打包到您的应用程序中。如果要共享资产,首先需要将其设置为设备上的文件 您需要添加路径\提供程序依赖项: 依赖项: 路径\提供程序:^2.0.1 然后,创建一个新的文件,并将数据从资产写入文件: //获取目
如错误所述,
assets/voices/pırt.mpeg
不是操作系统上文件的有效路径。这是一项资产,打包到您的应用程序中。如果要共享资产,首先需要将其设置为设备上的文件
您需要添加路径\提供程序依赖项:
依赖项:
路径\提供程序:^2.0.1
然后,创建一个新的文件
,并将数据从资产写入文件
:
//获取目录并生成文件对象
final Directory=await getTemporaryDirectory();
最终文件=文件(dir.path+'/mpeg_data');
//从资产中获取数据
ByteData data=wait rootBundle.load('assets/voices/pırt.mpeg');
//写入实际数据
wait file.writeAsBytes(data.buffer.asUint8List());
这些都应该在您共享文件之前完成。然后,在共享文件时,使用创建的文件对象的路径:
//获取目录并生成文件对象
final Directory=await getTemporaryDirectory();
最终文件=文件(dir.path);
//从资产中获取数据
ByteData data=wait rootBundle.load('assets/voices/pırt.mpeg');
//写入实际数据
wait file.writeAsBytes(data.buffer.asUint8List());
试一试{
Share.shareFiles([file.path],文本:“Share”);
}
捕获(ex){
印刷品(ex);
}
错误应该以文本形式复制粘贴到您的问题中,就像您的代码一样。不是像图片一样。谢谢:)你知道我的问题解决方案吗?我不知道“谢谢”是如何回应我之前的评论的。在你得到答案之前,你必须解决我说的问题。“谢谢你”回答了我的错误。我不知道这一点,你们教了我一些东西:)这通常意味着用新知识采取某种行动。我看到你现在编辑的错误。这是预期的。E/flatter(32083):[ERROR:flatter/lib/ui/ui_dart_state.cc(186)]未处理的异常:FileSystemException:无法打开文件,路径='/data/user/0/com.example.replik/cache'(操作系统错误:是一个目录,errno=21)E/flatter(32083):#0(file.open。(dart:io/file_impl.dart:356:9)E/flatter(32083):#1_rootrunnary(dart:async/zone.dart:1362:47)E/flatter(32083):#2_CustomZone.runnary(dart:async/zone.dart:1265:19)
我尝试了你的解决方案。我想这可以解决我的问题,但又出现了另一个问题。@MuhammetKorkmaz我忘记添加文件名了。请参阅编辑。感谢您的帮助。
E/flutter (31567): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(assets/voices/pırt.mpeg (No such file or directory), null, null, null)
E/flutter (31567): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:597:7)
E/flutter (31567): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:158:18)
IconButton(
icon: Icon(Icons.send),
color: Colors.black,
iconSize: 35,
onPressed: () {
try{
Share.shareFiles(["assets/voices/pırt.mpeg"],text: "Share");
}
catch(ex){
print(ex);
}
},
),