shareEvent static method
Share an Event with date, place, and vanity URL.
Implementation
static Future<void> shareEvent(Event event) async {
// Vanity URL: emxi.org/{slug} or emxi.org/e/{eventId}
String vanityUrl = DeeplinkUtilities.generateVanityUrl(type: 'event', id: event.id, slug: event.slug);
String dateText = event.eventDate > 0
? DateFormat.yMMMd(AppLocale.spanish.code)
.format(DateTime.fromMillisecondsSinceEpoch(event.eventDate))
: '';
String placeText = event.place?.name ?? '';
String sharedText = '${event.name}\n'
'${dateText.isNotEmpty ? "$dateText\n" : ""}'
'${placeText.isNotEmpty ? "$placeText\n" : ""}'
'${event.ownerName.isNotEmpty ? "por ${event.ownerName}\n" : ""}\n'
'${MessageTranslationConstants.shareAppMsg.tr}\n\n'
'${AppTranslationConstants.explorePlatform.tr}: $vanityUrl';
List<XFile> sharedFiles = [];
if (!kIsWeb) {
final thumbnailLocalPath = await _getThumbnailPath(
event.imgUrl, imgName: "${event.ownerName}_${event.name}",
);
if (thumbnailLocalPath.isNotEmpty) {
sharedFiles.add(XFile(thumbnailLocalPath));
}
}
ShareResult shareResult = await SharePlus.instance.share(
ShareParams(
text: sharedText,
files: sharedFiles.isNotEmpty ? sharedFiles : null,
previewThumbnail: sharedFiles.isNotEmpty ? sharedFiles.first : null,
uri: kIsWeb ? Uri.tryParse(vanityUrl) : null,
),
);
if (shareResult.status == ShareResultStatus.success && shareResult.raw != "null") {
Sint.snackbar(
MessageTranslationConstants.sharedApp.tr,
MessageTranslationConstants.sharedAppMsg.tr,
snackPosition: SnackPosition.bottom,
);
}
}