pickFiles method
Implementation
Future<List<dynamic>> pickFiles(bool multiple, List<String> mime) {
final completer = Completer<List<dynamic>>();
final picker = web.HTMLInputElement();
final isSafari =
web.window.navigator.userAgent.toLowerCase().contains('safari');
if (isSafari) web.document.body!.append(picker);
picker.multiple = multiple;
if (mime.isNotEmpty) picker.accept = mime.join(',');
void onChangeHandler() {
if (picker.files != null) {
final list = List.generate(
picker.files!.length, (index) => picker.files!.item(index));
completer.complete(list);
} else
completer.complete([]);
if (isSafari) picker.remove();
}
void onCancelHandler() {
completer.complete([]);
if (isSafari) picker.remove();
}
picker.onchange = onChangeHandler.toJS;
picker.oncancel = onCancelHandler.toJS;
picker.click();
return completer.future;
}