๐ icon_file
A Flutter package to automatically display a file icon (SVG) with a dynamic badge based on the file extension (.pdf, .jpg, .zip, etc.).
Perfect for file explorers, downloads, or file previews in apps.
๐งฉ Features
- Automatic detection of the file extension
- Dynamic colored badge based on file type
- Customizable style (color, text, etc.)
- Supports over 30 common extensions
- Ready for responsive layouts (ScreenUtil)
- Dark mode friendly
๐ธ Preview
| Default Icons | Customized Icons | 
|---|---|
|  |  | 
๐ Installation
Add this to your pubspec.yaml:
dependencies:
  icon_file: ^1.0.X
Then run:
flutter pub get
๐ ๏ธ Basic Usage
import "package:icon_file/icon_file.dart";
FileIcon("document.pdf");
๐จ Example with Custom Styles
FileIcon(
  "custom.pdf",
  color: Colors.deepPurple,
  extensionStyle: TextStyle(
    fontSize: 12,
    fontWeight: FontWeight.bold,
    color: Colors.yellow,
  ),
)
๐ก Available Parameters
| Parameter | Description | 
|---|---|
| fileName | (required) File name with extension ( document.pdf) | 
| color | Custom background color for the badge (optional) | 
| showExtension | Whether to show the badge with the extension (default: true) | 
| extensionStyle | Text style for the extension badge | 
| assetIcon | Custom path to SVG icon (default: assets/file.svg) | 
| size | Size of the icon (default: 80) | 
| roundedLabel | Whether the badge has rounded corners (default: true) | 
๐ Supported Extensions
This package automatically supports the following file types (and can be extended):
pdf, doc, docx, ppt, pptx, xls, xlsx, csv, txt, png, jpg, jpeg, svg, mp3, wav, aac, mp4, avi, mov, js, css, html, json, xml, zip, rar, 7z, tar, gz, dart
๐งช Full Example (UI)
List<String> files = [
  'document.pdf',
  'notes.docx',
  'image.png',
  'video.mp4',
  'music.mp3',
  'slides.pptx',
  'spreadsheet.xlsx',
  'archive.zip',
  'script.js',
  'style.css',
  'readme.txt',
  'logo.svg',
  'data.json',
  'source.dart',
];
List<Widget> icons = files.map((file) => FileIcon(file)).toList();
๐ฅ Contributing
Contributions are welcome!
Feel free to open an issue, submit a pull request, or simply report a bug.
๐ License
This project is licensed under the MIT License.