diff --git a/packages/file_selector/file_selector_web/CHANGELOG.md b/packages/file_selector/file_selector_web/CHANGELOG.md index 199ebda25dee..af9bde7e687f 100644 --- a/packages/file_selector/file_selector_web/CHANGELOG.md +++ b/packages/file_selector/file_selector_web/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.9.5 +* Adds support for mimeType on XFile. * Updates minimum supported SDK version to Flutter 3.35/Dart 3.9. ## 0.9.4+2 diff --git a/packages/file_selector/file_selector_web/example/integration_test/dom_helper_test.dart b/packages/file_selector/file_selector_web/example/integration_test/dom_helper_test.dart index b8b07cd0c246..c04102ec519b 100644 --- a/packages/file_selector/file_selector_web/example/integration_test/dom_helper_test.dart +++ b/packages/file_selector/file_selector_web/example/integration_test/dom_helper_test.dart @@ -46,8 +46,16 @@ void main() { }); group('getFiles', () { - final mockFile1 = File(['123456'.toJS].toJS, 'file1.txt'); - final mockFile2 = File([].toJS, 'file2.txt'); + final mockFile1 = File( + ['123456'.toJS].toJS, + 'file1.txt', + FilePropertyBag(type: 'text/plain'), + ); + final mockFile2 = File( + [].toJS, + 'file2.txt', + FilePropertyBag(type: 'text/plain'), + ); testWidgets('works', (_) async { final Future> futureFiles = domHelper.getFiles( @@ -61,11 +69,13 @@ void main() { expect(files.length, 2); expect(files[0].name, 'file1.txt'); + expect(files[0].mimeType, 'text/plain'); expect(await files[0].length(), 6); expect(await files[0].readAsString(), '123456'); expect(await files[0].lastModified(), isNotNull); expect(files[1].name, 'file2.txt'); + expect(files[1].mimeType, 'text/plain'); expect(await files[1].length(), 0); expect(await files[1].readAsString(), ''); expect(await files[1].lastModified(), isNotNull); diff --git a/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart b/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart index 72cb0de90b1e..e36b79d274cf 100644 --- a/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart +++ b/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart @@ -17,7 +17,11 @@ void main() { group('openFile', () { testWidgets('works', (WidgetTester _) async { - final XFile mockFile = createXFile('1001', 'identity.png'); + final XFile mockFile = createXFile( + '1001', + 'identity.png', + mimeType: 'image/png', + ); final mockDomHelper = MockDomHelper( files: [mockFile], @@ -39,6 +43,7 @@ void main() { expect(file, isNotNull); expect(file!.name, mockFile.name); + expect(file.mimeType, 'image/png'); expect(await file.length(), 4); expect(await file.readAsString(), '1001'); expect(await file.lastModified(), isNotNull); @@ -137,7 +142,16 @@ class MockDomHelper implements DomHelper { } } -XFile createXFile(String content, String name) { +XFile createXFile( + String content, + String name, { + String mimeType = 'text/plain', +}) { final data = Uint8List.fromList(content.codeUnits); - return XFile.fromData(data, name: name, lastModified: DateTime.now()); + return XFile.fromData( + data, + name: name, + lastModified: DateTime.now(), + mimeType: mimeType, + ); } diff --git a/packages/file_selector/file_selector_web/lib/src/dom_helper.dart b/packages/file_selector/file_selector_web/lib/src/dom_helper.dart index 2c0205c61550..f043116d194c 100644 --- a/packages/file_selector/file_selector_web/lib/src/dom_helper.dart +++ b/packages/file_selector/file_selector_web/lib/src/dom_helper.dart @@ -71,6 +71,7 @@ class DomHelper { } XFile _convertFileToXFile(File file) => XFile( + mimeType: file.type, URL.createObjectURL(file), name: file.name, length: file.size, diff --git a/packages/file_selector/file_selector_web/pubspec.yaml b/packages/file_selector/file_selector_web/pubspec.yaml index b9f8fe3c3615..ed324dab193e 100644 --- a/packages/file_selector/file_selector_web/pubspec.yaml +++ b/packages/file_selector/file_selector_web/pubspec.yaml @@ -2,7 +2,7 @@ name: file_selector_web description: Web platform implementation of file_selector repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_web issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22 -version: 0.9.4+2 +version: 0.9.5 environment: sdk: ^3.9.0