shareTextAsFile static method
Writes contents to a temporary file named fileName and opens the
platform share sheet to share it as a file.
Note: on web this returns immediately because file sharing is not consistently supported; callers should provide a web fallback (e.g. copy to clipboard if supported).
Implementation
static Future<void> shareTextAsFile({
required String fileName,
required String contents,
required String mimeType,
}) async {
try {
// On web, sharing a file isn't reliably supported; clipboard is used by caller.
if (kIsWeb) {
Clipboard.setData(ClipboardData(text: contents));
showFeedbackSnackbar(Strings.copiedClipboard.tr, Symbols.content_copy, isInfo: true);
return;
}
final Directory dir = await getTemporaryDirectory();
final File file = File('${dir.path}/$fileName');
await file.writeAsString(contents);
await SharePlus.instance.share(
ShareParams(
files: [XFile(file.path, mimeType: mimeType, name: fileName)],
),
);
} catch (_) {
Clipboard.setData(ClipboardData(text: contents));
showFeedbackSnackbar(Strings.copiedClipboard.tr, Symbols.content_copy, isInfo: true);
return;
}
}