filePattern static method

String? filePattern(
  1. String? fileName,
  2. String pattern, {
  3. String? message,
})

Validates file type/pattern.

Implementation

static String? filePattern(String? fileName, String pattern, {String? message}) {
  if (fileName == null || fileName.isEmpty) return null;

  // Pattern can be comma-separated extensions: ".pdf,.doc,.docx"
  // or mime types: "application/pdf,application/msword"
  final patterns = pattern.split(',').map((p) => p.trim()).toList();

  final extension = fileName.contains('.') ? '.${fileName.split('.').last.toLowerCase()}' : '';

  // Check if any pattern matches
  final matches = patterns.any((p) {
    if (p.startsWith('.')) {
      // Extension match
      return extension == p.toLowerCase();
    } else if (p.contains('/')) {
      // MIME type match (would need actual file MIME type)
      // For now, just check common extensions
      return _matchesMimeType(extension, p);
    }
    return false;
  });

  if (!matches) {
    return message ?? 'File type not allowed. Allowed types: $pattern';
  }

  return null;
}