| // Copyright 2020 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 = []; |
| for (final 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; |
| } |