launchPicker method

  1. @override
Future<File?> launchPicker(
  1. List<IDetectable>? detectors
)
override

Implementation

@override
Future<File?> launchPicker(List<IDetectable>? detectors) async {
  try {
    file_picker.FilePickerResult? result =
        await file_picker.FilePicker.platform.pickFiles(
            withReadStream: true,
            type: (accept == null) || (accept!.isEmpty)
                ? file_picker.FileType.any
                : file_picker.FileType.custom,
            allowedExtensions: accept);

    // file selected?
    if (result != null) {

      // set file
      XFile file = XFile(result.files.single.path!);
      String url = "file:${file.path}";
      String type = (await Mime.type(file.path)).toLowerCase();
      String name = basename(file.path);
      int size = await file.length();

      // detect in image
      if (detectors != null && type.startsWith("image")) {

        // create detectable image
        var detectable = await DetectableImage.fromFile(file);

        // detect
        for (var detector in detectors) {
          detector.detect(detectable, false);
        }
      }

      // return the file
      return File(file, url, name, type, size);
    }
  } catch (e) {
    Log().debug('Error Launching File Picker');
  }
  return null;
}