我一直在尝试在 Windows 上运行的 Flutter 应用程序中创建一个共享按钮,以允许将图像共享到社交媒体平台。我尝试在 Flutter 中使用 share_plus 包。共享文本效果很好。当我尝试共享图像时,图像不会出现,仅共享文本。这是我的代码(基于 share_plus 页面上的示例):
final imageAsset = "assets/image2.png";
ElevatedButton(
onPressed: () async {
final image = await rootBundle.load(imageAsset);
final buffer = image.buffer;
final bufferFile = XFile.fromData(
buffer.asUint8List(
image.offsetInBytes,
image.lengthInBytes,
),
name: 'name',
mimeType: 'image/png',
);
Share.shareXFiles(
[ bufferFile ],
subject: 'subject',
);
}
)
我也尝试了这个堆栈溢出问题的答案:
ElevatedButton(
onPressed: () async {
ByteData imagebyte = await rootBundle.load(imageAsset);
final temp = await getTemporaryDirectory();
final path = '${temp.path}/temp_image_name.png';
File(path).writeAsBytesSync(imagebyte.buffer.asUint8List());
await Share.shareXFiles([XFile(path, mimeType: "image/png")],
subject: "Siem en Klaas",
);
}
)
略有不同(因为它没有按照答案建议的那样工作),并且
final imageAsset = "assets/image2.png";
ElevatedButton(
onPressed: () async {
ByteData imagebyte = await rootBundle.load(imageAsset);
Share.shareXFiles([
XFile.fromData(
imagebyte.buffer.asUint8List(),
mimeType: 'image/png',
name: imageAsset.split("/").last.split(".")[0])
],
subject: "subject",
);
}
)
我能够通过 Image.asset 小部件显示图像,一切正常。另外,我查看了是否创建了临时文件,它是在我的用户的 Appdata 文件夹中创建的。此外,我没有收到任何错误消息,这非常令人沮丧。由于我是 Flutter 的新手,我感觉我错过了主代码之外的某些内容,并且必须在 pubspec 或其他内容中指定某些内容。如果有人能帮助我,我将不胜感激!另外,我很高兴了解在这种情况下如何接收错误消息。
我尝试创建一个使用 share_plus 共享图像的功能。尽管共享有效,并且我的应用程序运行良好,但图像没有出现!
我终于解决了这个问题.. 问题:
Instagram 将图像和文本标题视为多张图像,从而因 Instagram 问题而无法成功共享。最初的 _shareSheet 函数旨在共享带有文本标题的图像。为了解决这个问题,建议修改函数如下:
原有功能:
_shareSheet(File file) async {
try {
await Share.shareXFiles([XFile(file.path)], text: "Mohamed El-Sayed");
} catch (error) {
return;
}
}
修改功能:
_shareSheet(File file) async {
try {
await Share.shareXFiles([XFile(file.path)], text: null);
} catch (error) {
return;
}
}
在您的情况下删除“主题”,将其设置为空并且可以工作