showFilePicker static method

void showFilePicker({
  1. required dynamic action(
    1. List<FileData> file
    ),
  2. FileType fileType = FileType.any,
  3. bool allowMultiple = false,
  4. String? initialDirectory,
  5. String? dialogTitle,
  6. bool allowCompression = true,
  7. bool withReadStream = false,
  8. bool lockParentWindow = false,
  9. List<String>? allowedExtensions,
})

Implementation

static void showFilePicker({
  required final Function(List<FileData> file) action,
  final FileType fileType = FileType.any,
  final bool allowMultiple = false,
  final String? initialDirectory,
  final String? dialogTitle,
  final bool allowCompression = true,
  final bool withReadStream = false,
  final bool lockParentWindow = false,
  final List<String>? allowedExtensions,
}) async {
  final FilePickerResult? result = await FilePicker.platform.pickFiles(
    type: fileType,
    dialogTitle: dialogTitle,
    initialDirectory: initialDirectory,
    allowCompression: allowCompression,
    withReadStream: withReadStream,
    lockParentWindow: lockParentWindow,
    allowMultiple: allowMultiple,
    allowedExtensions: allowedExtensions,
  );
  final List<FileData> files = <FileData>[];

  if (result != null) {
    if (allowMultiple) {
      result.files.forEach(
        (final PlatformFile i) async {
          files.add(
            FileData(
              path: UApp.isWeb ? null : i.path,
              bytes: i.bytes,
              extension: ".${i.extension}",
              jsonDetail: MediaJsonDetail(title: i.name.split(".").first),
            ),
          );
        },
      );
      action(files);
    } else
      action(
        <FileData>[
          FileData(
            path: result.files.single.path,
            bytes: result.files.single.bytes,
            extension: result.files.single.extension,
            jsonDetail: MediaJsonDetail(title: result.files[0].name),
          ),
        ],
      );
  }
}