๐ 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.

