我正在使用“share_plus”Flutter 库通过 Firebase 动态链接共享文件。这是我当前使用的代码:
...............
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
var description = 'Check this out on our app ${dynamicLink.shortUrl}';
Share.shareXFiles([XFile(fileName)], text: description).then((value) async {
setState(() {
shareCount += 1;
});
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.remove("sharedPostId");
Navigator.pop(context);
});
.................
在 Android 上,共享底部工作表可以正常打开。但是,在 iOS 上,共享底部工作表无法打开,并且日志显示以下错误消息:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, sharePositionOrigin: argument must be set, {{0, 0}, {0, 0}} must be non-zero and within coordinate space of source view: {{0, 0}, {414, 736}}, null, null)
#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653)
#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:315)
<asynchronous suspension>
#2 MethodChannelShare.shareFilesWithResult (package:share_plus_platform_interface/method_channel/method_channel_share.dart:134)
任何帮助将不胜感激!
请参阅 pub.dev 上的 iPad 说明:参数
sharePositionOrigin
是必需的。
如果您在 flutter 中使用 Share_Plus 插件:
我通过添加 sharePositionOrigin: Rect.fromLTWH(0, 0, shareUrl() 函数中的 screenWidth, screenHeight) 这是我的代码:
......................................................
void shareUrl(String text, BuildContext context){
try{
Size size = MediaQuery.of(context).size;
double screenWidth = size.width;
double screenHeight = size.height;
Share.share(text,
sharePositionOrigin: Rect.fromLTWH(0, 0, screenWidth,
screenHeight));
} catch (e) {
Get.snackbar('Error', 'Failed to share: $e');
}
}
....................................................
我希望它有帮助。