icon_file 0.0.3 copy "icon_file: ^0.0.3" to clipboard
icon_file: ^0.0.3 copied to clipboard

A Flutter widget to display file icons with extensions.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:icon_file/icon_file.dart'; // Remplace par ton nom réel de package

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      designSize: const Size(360, 690),
      minTextAdapt: true,
      splitScreenMode: true,
      builder: (context, child) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          title: 'FileIcon Demo',
          theme: ThemeData(primarySwatch: Colors.blue),
          home: const FileIconDemo(),
        );
      },
    );
  }
}

class FileIconDemo extends StatelessWidget {
  const FileIconDemo({super.key});

  final List<String> files = const [
    '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',
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('FileIcon Demo')),
      body: ListView(
        padding: EdgeInsets.all(16.0.w),
        children: [
          _buildSectionTitle('🗂️ Fichiers par défaut'),
          _buildGrid(files.map((f) => FileIcon(f)).toList(), files),
          SizedBox(height: 24.h),
          _buildSectionTitle('🎨 Personnalisé (couleur / style)'),
          _buildGrid([
            FileIcon(
              'custom.pdf',
              color: Colors.deepPurple,
              extensionStyle: TextStyle(
                fontSize: 11.sp,
                fontWeight: FontWeight.bold,
                color: Colors.yellow,
              ),
            ),
            FileIcon(
              'image.png',
              showExtension: false,
            ),
            FileIcon(
              'darkmode.css',
              color: Colors.black,
              extensionStyle: TextStyle(color: Colors.white, fontSize: 10.sp),
            ),
          ], [
            'custom.pdf',
            'image.png (sans extension)',
            'darkmode.css'
          ]),
        ],
      ),
    );
  }

  Widget _buildSectionTitle(String title) {
    return Padding(
      padding: EdgeInsets.symmetric(vertical: 8.h),
      child: Text(
        title,
        style: TextStyle(fontSize: 16.sp, fontWeight: FontWeight.bold),
      ),
    );
  }

  Widget _buildGrid(List<Widget> icons, List<String> labels) {
    return GridView.builder(
      physics: const NeverScrollableScrollPhysics(),
      shrinkWrap: true,
      itemCount: icons.length,
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 3,
        mainAxisSpacing: 20.h,
        crossAxisSpacing: 20.w,
        childAspectRatio: 0.8,
      ),
      itemBuilder: (context, index) {
        return Column(
          children: [
            icons[index],
            SizedBox(height: 8.h),
            Text(
              labels[index],
              style: TextStyle(fontSize: 11.sp),
              textAlign: TextAlign.center,
            ),
          ],
        );
      },
    );
  }
}
2
likes
160
points
32
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter widget to display file icons with extensions.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_screenutil, flutter_svg

More

Packages that depend on icon_file