33// found in the LICENSE file.
44
55import 'dart:async' ;
6-
6+ import 'package:logger/logger.dart' ;
77import 'package:file_selector_platform_interface/file_selector_platform_interface.dart' ;
8-
98export 'package:file_selector_platform_interface/file_selector_platform_interface.dart'
109 show XFile, XTypeGroup;
1110
11+ final _logger = Logger ();
12+
1213/// Open file dialog for loading files and return a file path
1314Future <XFile > openFile ({
1415 List <XTypeGroup > acceptedTypeGroups,
1516 String initialDirectory,
1617 String confirmButtonText,
1718}) {
19+ _verifyExtensions (acceptedTypeGroups);
1820 return FileSelectorPlatform .instance.openFile (
1921 acceptedTypeGroups: acceptedTypeGroups,
2022 initialDirectory: initialDirectory,
@@ -27,6 +29,7 @@ Future<List<XFile>> openFiles({
2729 String initialDirectory,
2830 String confirmButtonText,
2931}) {
32+ _verifyExtensions (acceptedTypeGroups);
3033 return FileSelectorPlatform .instance.openFiles (
3134 acceptedTypeGroups: acceptedTypeGroups,
3235 initialDirectory: initialDirectory,
@@ -40,6 +43,7 @@ Future<String> getSavePath({
4043 String suggestedName,
4144 String confirmButtonText,
4245}) async {
46+ _verifyExtensions (acceptedTypeGroups);
4347 return FileSelectorPlatform .instance.getSavePath (
4448 acceptedTypeGroups: acceptedTypeGroups,
4549 initialDirectory: initialDirectory,
@@ -55,3 +59,16 @@ Future<String> getDirectoryPath({
5559 return FileSelectorPlatform .instance.getDirectoryPath (
5660 initialDirectory: initialDirectory, confirmButtonText: confirmButtonText);
5761}
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