Skip to content

Commit d7f3669

Browse files
Merge pull request vicajilau#1567 from Sameri11/fix-issue-1555
fix default_plugin warnings with recent dart sdk
2 parents a0827fb + 434d950 commit d7f3669

12 files changed

Lines changed: 45 additions & 51 deletions

‎CHANGELOG.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 8.0.7
2+
### General
3+
- Fixes an issue relating to incorrect registration of platform-specific implementations. [#1555](https://github.com/miguelpruivo/flutter_file_picker/issues/1555).
4+
- Fixes an issue that required users to use `kIsWeb` and `FilePickerWeb` when running on the web.
5+
16
## 8.0.6
27
### Android
38
Updates the minimum Android SDK version to 21, to match the current Flutter minimum Android SDK version. Fixes [#1522](https://github.com/miguelpruivo/flutter_file_picker/issues/1522), [#1528](https://github.com/miguelpruivo/flutter_file_picker/issues/1528), and [#1531](https://github.com/miguelpruivo/flutter_file_picker/issues/1531). Thanks @navaronbracke.

‎example/lib/generated_plugin_registrant.dart‎

Lines changed: 0 additions & 17 deletions
This file was deleted.

‎lib/file_picker.dart‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,10 @@ library file_picker;
33
export './src/file_picker.dart';
44
export './src/platform_file.dart';
55
export './src/file_picker_result.dart';
6+
export './src/file_picker_macos.dart';
7+
export './src/linux/file_picker_linux.dart';
8+
export './src/file_picker_io.dart';
9+
// Conditional export needed for web to successfully compile,
10+
// as `dart:ffi` is not available on the web.
11+
export './src/windows/file_picker_windows_stub.dart'
12+
if (dart.library.ffi) './src/windows/file_picker_windows.dart';

‎lib/src/file_picker.dart‎

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
import 'dart:async';
2-
import 'dart:io';
32
import 'dart:typed_data';
43

5-
import 'package:file_picker/src/file_picker_io.dart';
6-
import 'package:file_picker/src/file_picker_macos.dart';
74
import 'package:file_picker/src/file_picker_result.dart';
8-
import 'package:file_picker/src/linux/file_picker_linux.dart';
9-
import 'package:file_picker/src/windows/stub.dart'
10-
if (dart.library.io) 'package:file_picker/src/windows/file_picker_windows.dart';
115
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
126

137
const String defaultDialogTitle = '';
@@ -38,7 +32,7 @@ abstract class FilePicker extends PlatformInterface {
3832

3933
static final Object _token = Object();
4034

41-
static FilePicker _instance = FilePicker._setPlatform();
35+
static late FilePicker _instance;
4236

4337
static FilePicker get platform => _instance;
4438

@@ -47,22 +41,6 @@ abstract class FilePicker extends PlatformInterface {
4741
_instance = instance;
4842
}
4943

50-
factory FilePicker._setPlatform() {
51-
if (Platform.isAndroid || Platform.isIOS) {
52-
return FilePickerIO();
53-
} else if (Platform.isLinux) {
54-
return FilePickerLinux();
55-
} else if (Platform.isWindows) {
56-
return filePickerWithFFI();
57-
} else if (Platform.isMacOS) {
58-
return FilePickerMacOS();
59-
} else {
60-
throw UnimplementedError(
61-
'The current platform "${Platform.operatingSystem}" is not supported by this plugin.',
62-
);
63-
}
64-
}
65-
6644
/// Retrieves the file(s) from the underlying platform
6745
///
6846
/// Default [type] set to [FileType.any] with [allowMultiple] set to `false`.

‎lib/src/file_picker_io.dart‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ const EventChannel _eventChannel =
1616

1717
/// An implementation of [FilePicker] that uses method channels.
1818
class FilePickerIO extends FilePicker {
19+
static void registerWith() {
20+
FilePicker.platform = FilePickerIO();
21+
}
22+
1923
static const String _tag = 'MethodChannelFilePicker';
2024
static StreamSubscription? _eventSubscription;
2125

‎lib/src/file_picker_macos.dart‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import 'package:file_picker/file_picker.dart';
44
import 'package:file_picker/src/utils.dart';
55

66
class FilePickerMacOS extends FilePicker {
7+
static void registerWith() {
8+
FilePicker.platform = FilePickerMacOS();
9+
}
10+
711
@override
812
Future<FilePickerResult?> pickFiles({
913
String? dialogTitle,

‎lib/src/linux/file_picker_linux.dart‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import 'package:file_picker/src/platform_file.dart';
77
import 'package:file_picker/src/utils.dart';
88

99
class FilePickerLinux extends FilePicker {
10+
static void registerWith() {
11+
FilePicker.platform = FilePickerLinux();
12+
}
13+
1014
@override
1115
Future<FilePickerResult?> pickFiles({
1216
String? dialogTitle,

‎lib/src/windows/file_picker_windows.dart‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import 'package:file_picker/src/windows/file_picker_windows_ffi_types.dart';
1111
import 'package:path/path.dart';
1212
import 'package:win32/win32.dart';
1313

14-
FilePicker filePickerWithFFI() => FilePickerWindows();
15-
1614
class FilePickerWindows extends FilePicker {
15+
static void registerWith() {
16+
FilePicker.platform = FilePickerWindows();
17+
}
18+
1719
@override
1820
Future<FilePickerResult?> pickFiles({
1921
String? dialogTitle,
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import 'package:file_picker/file_picker.dart';
2+
3+
class FilePickerWindows extends FilePicker {
4+
/// Errors on attempted instantiation of the stub. It exists only to satisfy
5+
/// compile-time dependencies, and should never actually be created.
6+
FilePickerWindows() : assert(false);
7+
}

‎lib/src/windows/stub.dart‎

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)