diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bbce0a9..0ce1feee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 8.0.3 +### Web +Fixes a TypeError with `pickFiles()` when using the HTML renderer. + ## 8.0.2 ### iOS Fixes the bug [#1412](https://github.com/miguelpruivo/flutter_file_picker/issues/1412) that picking a folder in iOS causes the original folder to be deleted. diff --git a/lib/_internal/file_picker_web.dart b/lib/_internal/file_picker_web.dart index cb432cf2..f43f127a 100644 --- a/lib/_internal/file_picker_web.dart +++ b/lib/_internal/file_picker_web.dart @@ -208,8 +208,24 @@ class FilePickerWeb extends FilePicker { final blob = file.slice(start, end); reader.readAsArrayBuffer(blob); await EventStreamProviders.loadEvent.forTarget(reader).first; - yield reader.result as List; - start += _readStreamChunkSize; + final JSAny? readerResult = reader.result; + if (readerResult == null) { + continue; + } + // TODO: use `isA()` when switching to Dart 3.4 + // Handle the ArrayBuffer type. This maps to a `ByteBuffer` in Dart. + if (readerResult.instanceOfString('ArrayBuffer')) { + yield (readerResult as JSArrayBuffer).toDart.asUint8List(); + start += _readStreamChunkSize; + continue; + } + // TODO: use `isA()` when switching to Dart 3.4 + // Handle the Array type. + if (readerResult.instanceOfString('Array')) { + // Assume this is a List. + yield (readerResult as JSArray).toDart.cast(); + start += _readStreamChunkSize; + } } } } diff --git a/pubspec.yaml b/pubspec.yaml index 2a344f82..8f2c8b16 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A package that allows you to use a native file explorer to pick sin homepage: https://github.com/miguelpruivo/plugins_flutter_file_picker repository: https://github.com/miguelpruivo/flutter_file_picker issue_tracker: https://github.com/miguelpruivo/flutter_file_picker/issues -version: 8.0.2 +version: 8.0.3 dependencies: flutter: