3
3
// found in the LICENSE file.
4
4
5
5
import 'dart:async' ;
6
-
6
+ import 'package:logger/logger.dart' ;
7
7
import 'package:file_selector_platform_interface/file_selector_platform_interface.dart' ;
8
-
9
8
export 'package:file_selector_platform_interface/file_selector_platform_interface.dart'
10
9
show XFile, XTypeGroup;
11
10
11
+ final _logger = Logger ();
12
+
12
13
/// Open file dialog for loading files and return a file path
13
14
Future <XFile > openFile ({
14
15
List <XTypeGroup > acceptedTypeGroups,
15
16
String initialDirectory,
16
17
String confirmButtonText,
17
18
}) {
19
+ _verifyExtensions (acceptedTypeGroups);
18
20
return FileSelectorPlatform .instance.openFile (
19
21
acceptedTypeGroups: acceptedTypeGroups,
20
22
initialDirectory: initialDirectory,
@@ -27,6 +29,7 @@ Future<List<XFile>> openFiles({
27
29
String initialDirectory,
28
30
String confirmButtonText,
29
31
}) {
32
+ _verifyExtensions (acceptedTypeGroups);
30
33
return FileSelectorPlatform .instance.openFiles (
31
34
acceptedTypeGroups: acceptedTypeGroups,
32
35
initialDirectory: initialDirectory,
@@ -40,6 +43,7 @@ Future<String> getSavePath({
40
43
String suggestedName,
41
44
String confirmButtonText,
42
45
}) async {
46
+ _verifyExtensions (acceptedTypeGroups);
43
47
return FileSelectorPlatform .instance.getSavePath (
44
48
acceptedTypeGroups: acceptedTypeGroups,
45
49
initialDirectory: initialDirectory,
@@ -55,3 +59,16 @@ Future<String> getDirectoryPath({
55
59
return FileSelectorPlatform .instance.getDirectoryPath (
56
60
initialDirectory: initialDirectory, confirmButtonText: confirmButtonText);
57
61
}
62
+
63
+ void _verifyExtensions (List <XTypeGroup > acceptedTypeGroups) {
64
+ acceptedTypeGroups? .asMap ()? .forEach ((i, acceptedTypeGroup) {
65
+ acceptedTypeGroup.extensions? .asMap ()? .forEach ((j, ext) {
66
+ if (ext.startsWith ('.' )) {
67
+ _logger.w (
68
+ 'acceptedTypeGroups[${i }].extensions[${j }] with value "${ext }" is invalid.'
69
+ ' Remove the leading dot.' ,
70
+ );
71
+ }
72
+ });
73
+ });
74
+ }
0 commit comments