Ensemble Icons
A comprehensive Flutter icon package providing access to multiple icon libraries including Material Design, Remix Icons, and Font Awesome. Perfect for Flutter applications that need consistent, high-quality icons across different design systems.
β¨ Features
- Multiple Icon Libraries: Material Design, Remix Icons, and Font Awesome
- Easy Integration: Simple API for using icons in your Flutter apps
- Customizable: Support for custom sizing, colors, and styling
- High Quality: Vector-based icons that scale perfectly
- Ensemble UI Ready: Designed to work seamlessly with Ensemble UI framework
π Quick Start
Installation
Add this to your pubspec.yaml
:
dependencies:
ensemble_icons: ^1.0.1
Then run:
flutter pub get
Basic Usage
import 'package:ensemble_icons/ensemble_icons.dart';
// Use Material Design icons
Icon(
icon: MaterialIcons.home,
size: 24.0,
color: Colors.blue,
)
// Use Remix Icons
Icon(
icon: RemixIcons.home,
size: 24.0,
color: Colors.green,
)
// Use Font Awesome icons
Icon(
icon: FontAwesomeIcons.home,
size: 24.0,
color: Colors.orange,
)
π¨ Icon Libraries
Material Design Icons
- Version: Latest Flutter SDK version
- Features: Google's Material Design icon set
- Usage:
MaterialIcons.iconName
Remix Icons
- Version: v4.2.0 (2024-03-13)
- Features: Open-source icon library with 2,000+ icons
- Usage:
RemixIcons.iconName
Font Awesome Icons
- Version: v6.5.1 (2024-03-11)
- Features: Professional icon toolkit with 1,600+ free icons
- Usage:
FontAwesomeIcons.iconName
π§ Advanced Usage
Custom Icon Widget
class CustomIcon extends StatelessWidget {
final String iconName;
final String library;
final double size;
final Color? color;
const CustomIcon({
Key? key,
required this.iconName,
this.library = 'default',
this.size = 24.0,
this.color,
}) : super(key: key);
@override
Widget build(BuildContext context) {
IconData iconData;
switch (library) {
case 'remix':
iconData = RemixIcons.values.firstWhere(
(icon) => icon.name == iconName,
orElse: () => RemixIcons.question,
);
break;
case 'fontAwesome':
iconData = FontAwesomeIcons.values.firstWhere(
(icon) => icon.name == iconName,
orElse: () => FontAwesomeIcons.question,
);
break;
default:
iconData = MaterialIcons.values.firstWhere(
(icon) => icon.name == iconName,
orElse: () => MaterialIcons.help,
);
}
return Icon(
iconData,
size: size,
color: color,
);
}
}
Ensemble UI Integration
- Icon:
name: "home"
library: "remix" # default / remix / fontAwesome
size: "24"
color: "#007AFF"
π API Reference
Icon Classes
Class | Description | Icons Available |
---|---|---|
MaterialIcons |
Material Design icons | 1,000+ |
RemixIcons |
Remix icon library | 2,000+ |
FontAwesomeIcons |
Font Awesome icons | 1,600+ |
Common Properties
Property | Type | Default | Description |
---|---|---|---|
size |
double |
24.0 |
Icon size in logical pixels |
color |
Color? |
null |
Icon color (inherits from theme if null) |
semanticLabel |
String? |
null |
Accessibility label for screen readers |
π Updating Icon Libraries
Remix Icons
Follow the documentation in the update folder to update to the latest version.
Font Awesome
Update the font_awesome_flutter
dependency in pubspec.yaml
to get the latest icons.
Material Icons
Material icons are automatically updated with Flutter SDK updates.
π± Platform Support
- β Android: Full support
- β iOS: Full support
- β Web: Full support
- β Desktop: Full support
π€ Contributing
We welcome contributions! Please feel free to:
- Report bugs and issues
- Suggest new features
- Submit pull requests
- Improve documentation
π License
This project is licensed under the MIT License.
π Acknowledgments
- Part of the Ensemble UI ecosystem
- Built for the Flutter community
Built with β€οΈ for the Flutter community