| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; |
| |
| /// Convert list of XTypeGroups to a comma-separated string |
| String acceptedTypesToString(List<XTypeGroup>? acceptedTypes) { |
| if (acceptedTypes == null) { |
| return ''; |
| } |
| final List<String> allTypes = <String>[]; |
| for (final XTypeGroup group in acceptedTypes) { |
| _assertTypeGroupIsValid(group); |
| if (group.extensions != null) { |
| allTypes.addAll(group.extensions!.map(_normalizeExtension)); |
| } |
| if (group.mimeTypes != null) { |
| allTypes.addAll(group.mimeTypes!); |
| } |
| if (group.webWildCards != null) { |
| allTypes.addAll(group.webWildCards!); |
| } |
| } |
| return allTypes.join(','); |
| } |
| |
| /// Make sure that at least one of its fields is populated. |
| void _assertTypeGroupIsValid(XTypeGroup group) { |
| assert( |
| !((group.extensions == null || group.extensions!.isEmpty) && |
| (group.mimeTypes == null || group.mimeTypes!.isEmpty) && |
| (group.webWildCards == null || group.webWildCards!.isEmpty)), |
| 'At least one of extensions / mimeTypes / webWildCards is required for web.'); |
| } |
| |
| /// Append a dot at the beggining if it is not there png -> .png |
| String _normalizeExtension(String ext) { |
| return ext.isNotEmpty && ext[0] != '.' ? '.$ext' : ext; |
| } |