share static method

Future<bool> share({
  1. String subject = '',
  2. String title = '',
  3. String text = '',
  4. String url = '',
  5. List<XFile> files = const [],
})

分享内容到系统分享面板(文本、链接、图片等)

参数: 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;
}