fluttercommunity / plus_plugins

Flutter Community Plus Plugins
BSD 3-Clause "New" or "Revised" License
1.61k stars 976 forks source link

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

Closed richard457 closed 2 weeks ago

richard457 commented 3 months ago

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

miquelbeltran commented 3 months ago

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.
github-actions[bot] commented 4 weeks ago

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