plus_plugins icon indicating copy to clipboard operation
plus_plugins copied to clipboard

[Bug]: share_plus on windows does not attach file instead it attach file path

Open richard457 opened this issue 1 year ago • 2 comments

Platform

Windows 11

Plugin

share_plus

Version

share_plus: ^9.0.0

Flutter SDK

3.22

Steps to reproduce

Future shareFileAsAttachment(String filePath) async { final now = DateTime.now(); final formattedDate = DateFormat('yyyy-MM-dd').format(now); final file = File(filePath); final fileName = p.basename(file.path);

if (Platform.isWindows || Platform.isLinux) {
  final bytes = await file.readAsBytes();
  final mimeType = _lookupMimeType(filePath);
  await Share.shareXFiles(
    [XFile.fromData(bytes, mimeType: mimeType, name: fileName)],
    subject: 'Report Download - $formattedDate',
  );
} else {
  await Share.shareXFiles(
    [XFile(filePath)],
    subject: 'Report Download - $formattedDate',
  );
}

}

Code Sample

Future<void> shareFileAsAttachment(String filePath) async {
    final now = DateTime.now();
    final formattedDate = DateFormat('yyyy-MM-dd').format(now);
    final file = File(filePath);
    final fileName = p.basename(file.path);

    if (Platform.isWindows || Platform.isLinux) {
      final bytes = await file.readAsBytes();
      final mimeType = _lookupMimeType(filePath);
      await Share.shareXFiles(
        [XFile.fromData(bytes, mimeType: mimeType, name: fileName)],
        subject: 'Report Download - $formattedDate',
      );
    } else {
      await Share.shareXFiles(
        [XFile(filePath)],
        subject: 'Report Download - $formattedDate',
      );
    }
  }

Logs

N/A

Flutter Doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.22.2, on macOS 14.4.1 23E224 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.3)
[✓] IntelliJ IDEA Community Edition (version 2024.1.1)
[✓] VS Code (version 1.88.1)
[✓] Connected device (2 available)
[✓] Network resources

Checklist before submitting a bug

  • [X] I searched issues in this repository and couldn't find such bug/problem
  • [X] I Google'd a solution and I couldn't find it
  • [X] I searched on StackOverflow for a solution and I couldn't find it
  • [X] I read the README.md file of the plugin
  • [X] I'm using the latest version of the plugin
  • [X] All dependencies are up to date with flutter pub upgrade
  • [X] I did a flutter clean
  • [X] I tried running the example project

richard457 avatar Jul 13 '24 15:07 richard457

Hello, I have no idea, honestly, but a couple of things to consider nevertheless:

  1. Avoid using XFile.fromData and instead write down the file in a folder you control. This shold be mentioned in the README.md file. The name parameter in XFile does nothing, only works on web, this is a known issue in the XFile dart package.
  2. shareXFile() doesn't work at all on Linux. Also mentioned on the README file. Saying this because you have || Platform.isLinux in the example code.

miquelbeltran avatar Jul 13 '24 16:07 miquelbeltran

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days

github-actions[bot] avatar Oct 12 '24 00:10 github-actions[bot]