share static method
分享内容到系统分享面板(文本、链接、图片等)
参数:
subject 分享主题或邮件主题,默认空字符串
title 分享标题,默认空字符串
text 分享文本,默认空字符串
url 分享链接,默认空字符串
files 要分享的文件列表,通常为图片,默认空
示例:
// 分享文本
await AppUtil.share(text: "Hello, world!");
// 分享链接
await AppUtil.share(url: "https://www.apple.com", title: "苹果官网");
// 分享文件
List<XFile> images = [XFile('/path/to/image.jpg')];
await AppUtil.share(files: images);
返回值: Future<bool> 分享是否被正常弹出(仅窗口关闭会返回false)
返回示例: true // 用户点击"分享" false // 用户主动关闭分享面板
Implementation
static Future<bool> share({
String subject = '',
String title = '',
String text = '',
String url = '',
List<XFile> files = const [],
}) async {
EasyLoading.show();
ShareResult shareResult;
ShareParams shareParams;
if (files.isNotEmpty) {
shareParams = ShareParams(files: files);
} else if (url.isNotEmpty) {
shareParams = ShareParams(title: title, uri: Uri.parse(url));
} else {
shareParams = ShareParams(subject: subject, title: title, text: text);
}
// 检查是否是iPad并调整分享浮窗位置
if (GetPlatform.isIOS && Get.context?.isTablet == true) {
final Size screenSize = MediaQuery.of(Get.context!).size;
// 屏幕中心位置的一半宽/高的矩形区域
final Rect sharePositionOrigin = Rect.fromCenter(
center: Offset(screenSize.width / 2, screenSize.height / 2),
width: screenSize.width / 2,
height: screenSize.height / 2,
);
if (files.isNotEmpty) {
shareParams = ShareParams(files: files);
} else if (url.isNotEmpty) {
shareParams = ShareParams(
title: title,
uri: Uri.parse(url),
sharePositionOrigin: sharePositionOrigin,
);
} else {
shareParams = ShareParams(
subject: subject,
title: title,
text: text,
sharePositionOrigin: sharePositionOrigin,
);
}
}
shareResult = await SharePlus.instance.share(shareParams);
EasyLoading.dismiss();
if (shareResult.status == ShareResultStatus.dismissed) {
return false;
}
Logger.log('Thank you for sharing my website!');
return true;
}