filePicker static method

dynamic filePicker({
  1. required FileData fileData,
  2. int? maxFileSizeInMb,
  3. List<String> allowedExtensions = const [Files.pdf, Files.doc, Files.docx, Files.xls, Files.xlsx, Files.ppt, Files.pptx, Files.png, Files.jpg, Files.jpeg],
  4. required dynamic onSelected(
    1. FileData fileData
    ),
  5. dynamic onCancel(
    1. String message
    )?,
})

function file picker for pick any file and save to temporary cache directory

Implementation

static filePicker(
    {required FileData fileData,
    int? maxFileSizeInMb,
    List<String> allowedExtensions = const [
      Files.pdf,
      Files.doc,
      Files.docx,
      Files.xls,
      Files.xlsx,
      Files.ppt,
      Files.pptx,
      Files.png,
      Files.jpg,
      Files.jpeg
    ],
    required Function(FileData fileData) onSelected,
    Function(String message)? onCancel}) async {
  FilePickerResult? result = await FilePicker.platform
      .pickFiles(type: FileType.custom, allowedExtensions: allowedExtensions);
  if (result != null && result.files.single.path != null) {
    if (maxFileSizeInMb != null &&
        Files.mb(result.files.single.size) > maxFileSizeInMb) {
      dev.log(Files._fileMoreThanMB(maxFileSizeInMb));
      if (onCancel != null) {
        onCancel(Files._fileMoreThanMB(maxFileSizeInMb));
      }
      return;
    }
    fileData.hasFile = true;
    fileData.fileName = result.files.single.name;
    fileData.filePath = result.files.single.path!;
    fileData.fileMimeType = Files.getMimeType(result.files.single.path!);
    fileData.path = result.files.single.path!;
    onSelected(fileData);
  } else {
    dev.log(Files._filePickCancel);
    if (onCancel != null) {
      onCancel(Files._filePickCancel);
    }
    return;
  }
}