start method

  1. @override
Future<bool> start({
  1. bool refresh = false,
  2. String? key,
})
override

Implementation

@override
Future<bool> start({bool refresh = false, String? key}) async {
  bool ok = true;

  try {
    file_picker.FilePicker filepicker = file_picker.FilePicker(allow);

    // fire on start
    if (onstart != null) {
      var handler = EventHandler(this);
      ok = await handler.execute(_onstart);
      if (ok == false) return ok;
    }

    File? file = await filepicker.launchPicker(detectors);
    if (file != null) {
      // remove file form scope
      if (this.file != null &&
          scope != null &&
          scope!.files.containsValue(this.file)) {
        scope!.files.removeWhere((key, value) => value == this.file);
      }

      this.file = file;
      await onFile(file);
    }

    // fire on dismissed
    else if (ondismissed != null) {
      var handler = EventHandler(this);
      ok = await handler.execute(_ondismissed);
      if (ok == false) return ok;
    }
  } catch (e) {
    ok = await onFail(Data(), code: 500, message: e.toString());
  }

  return ok;
}