使用 Flutter 包 share_plus 共享时图像不显示

问题描述 投票:0回答:1

我一直在尝试在 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 共享图像的功能。尽管共享有效,并且我的应用程序运行良好,但图像没有出现!

flutter image file-sharing share-plus
1个回答
0
投票

我终于解决了这个问题.. 问题:

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;
}
}

在您的情况下删除“主题”,将其设置为空并且可以工作

© www.soinside.com 2019 - 2024. All rights reserved.