class FileUtils {

  // 支持的图片格式列表
  static const imageExtensions = [
    'jpg', 'jpeg', 'png', 'gif', 'webp',
    'bmp', 'tiff', 'svg', 'heic', 'heif'
  ];

  // 支持的文档格式列表
  static const documentExtensions = [
    'pdf', 'doc', 'docx', 'xls', 'xlsx',
    'ppt', 'pptx', 'txt', 'rtf', 'csv',
    'odt', 'ods', 'odp'
  ];


  // 获取 URL 的文件扩展名（小写）
  static String? _getFileExtension(String url) {
    try {
      // 处理带有查询参数的 URL
      final uri = Uri.parse(url);
      final pathSegments = uri.pathSegments;
      if (pathSegments.isEmpty) return null;

      final fileName = pathSegments.last;
      final dotIndex = fileName.lastIndexOf('.');
      if (dotIndex == -1) return null;

      return fileName.substring(dotIndex + 1).toLowerCase();
    } catch (e) {
      return null;
    }
  }

  // 判断是否是图片
  static bool isImage(String url) {
    final ext = _getFileExtension(url);
    return ext != null && imageExtensions.contains(ext);
  }

  // 判断是否是文档
  static bool isDocument(String url) {
    final ext = _getFileExtension(url);
    return ext != null && documentExtensions.contains(ext);
  }

  // 综合判断方法
  static FileType getFileType(String url) {
    final ext = _getFileExtension(url);
    if (ext == null) return FileType.unknown;

    if (imageExtensions.contains(ext)) return FileType.image;
    if (documentExtensions.contains(ext)) return FileType.document;

    return FileType.unknown;
  }

}

enum FileType { image, document, unknown }