颤振共享图像/文件( 模仿类型问题 )



所以我需要使用 Flutter 将图像共享到另一个应用程序,我使用 esys_flutter_share 1.0.2 插件

Future<void> _shareImage(int index) async {
final filename = _imageList[index].split("/")[2];
try {
final ByteData bytes = await rootBundle.load(_imageList[index]);
await Share.file(
'esys image', 'esys.png', bytes.buffer.asUint8List(), 'image/png',
text: '$filename');
} catch (e) {
print('error: $e');
}
}

这是示例页面中的相同代码,将我的图像从我的应用程序共享到另一个应用程序,这是Android/ioos无法识别作为图像并共享为文本的mimeType的唯一问题(在ios模拟器甚至真正的ios手机上尝试过(

问题的屏幕截图 屏幕截图我需要它的方式

尝试了"图像/png","图像/jpg"ecc,始终像文本文件一样共享文件。

share_extend iOS和Android的插件,用于共享文本,图像,视频和文件。

用:

https://pub.dev/packages/share_extend#-installing-tab-

而不是:

https://pub.dev/packages/esys_flutter_share#-installing-tab-

首先,将share_extend作为依赖项添加到 pubspec.yaml 文件中。

dependencies:
share_extend: "^1.1.7"

将以下键添加到位于/ios/Runner/Info.plist 中的 info.plist 文件中,用于将共享图像保存到照片库。

<key>NSPhotoLibraryAddUsageDescription</key>
<string>describe why your app needs access to write photo library</string>

如果您的项目需要读取和写入权限才能共享外部存储文件,请将以下权限添加到位于/android/app/src/main/AndroidManifest 中的 AndroidManifest.xml.xml

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

进口

import 'package:share_extend/share_extend.dart';

共享文本

ShareExtend.share("Enter Text Here", "text"); //don't change second parameter it's 
//defining the type of file to share.

共享图像

ShareExtend.share("Enter Image path Here", "image"); //don't change second parameter 
//it's defining the type of file to share.

分享视频

ShareExtend.share("Enter Video path Here", "video"); //don't change second parameter 
//it's defining the type of file to share.

共享文件

ShareExtend.share("Enter File path Here", "file"); //don't change second parameter 
//it's defining the type of file to share.

您还可以使用此库共享多个图像。

发现我的问题,如果我让可选的字符串文本为空,插件会将文件共享为 和图像文件,例如:

final ByteData bytes = await rootBundle.load('assets/images/p1.jpg');
await Share.file(
'Preset image', '$filename.jpg', bytes.buffer.asUint8List(), '',
text: '');

在此处输入图像描述

相反,如果我在可选的描述字符串"文本:"文本:"我的可选文本"中写下任何内容,当我共享时,我会像原始问题一样共享文件。