content method

Future<void> content({
  1. required String title,
  2. required String imageUrl,
  3. required String deepLinkUrl,
  4. VoidCallback? onReady,
})

Implementation

Future<void> content({
  required String title,
  required String imageUrl,
  required String deepLinkUrl,
  VoidCallback? onReady,
}) async {
  try {
    if (imageUrl.trim().isEmpty) {
      ckError('Image URL cannot be empty');
      return;
    }

    final resolvedUrl = resolveImageUrl(imageUrl);
    final uri = Uri.tryParse(resolvedUrl);
    if (uri == null) {
      ckError('Invalid image URL: $imageUrl');
      return;
    }

    final response = await http.get(uri);
    if (response.statusCode != 200) {
      ckError('Failed to fetch image ($uri): status ${response.statusCode}');
      return;
    }

    final sanitizedTitle = title.replaceAll(RegExp(r'[\\/:*?"<>|]'), '_');
    final tempDir = await CkPath.getTemporaryDirectory();
    final file = File('${tempDir.path}/$sanitizedTitle.jpg');
    await file.writeAsBytes(response.bodyBytes);
    final xFile = XFile(file.path);
    final params = ShareParams(
      text: '$title\n$deepLinkUrl',
      files: [xFile],
      title: title,
      subject: title,
      fileNameOverrides: ['$sanitizedTitle.jpg'],
      previewThumbnail: xFile,
    );
    onReady?.call();
    await SharePlus.instance.share(params);
    file.delete();
  } catch (e) {
    ckError('Error sharing: $e');
  }
}