1,866 Icons in Your Flutter App: Getting Started with flutter_lucide
flutter_lucide 1.52.0 ports the Lucide icon set to Flutter with tree-shaking, zero dependencies, and the standard Icon widget.
Published on • October 7, 2026
AI Assistant
Material Icons are fine until you need a specific glyph — and then you either settle for something close, bundle an icon font you stitched together yourself, or reach for a one-off SVG package. Lucide has become the default choice for modern web and product UI: a clean, consistent line-icon set derived from Feather Icons, ISC-licensed, with thousands of glyphs and active releases.
flutter_lucide brings that set to Flutter. The current release is 1.52.0, published two days ago, tracking Lucide 1.52.0 exactly.
By the Numbers
- 1,866+ icons from Lucide 1.52.0
- Zero dependencies beyond Flutter itself
- MIT licensed, all six platforms (Android, iOS, Linux, macOS, web, Windows)
- 160 pub points — the maximum score
- Tree-shakeable: only the icons you reference are compiled in
One note if you’re reading pub.dev metadata: the auto-generated library doc blurb still says “1450+”. The README’s 1,866+ figure, matched to the Lucide 1.52.0 release tag, is the accurate count.
It’s an unofficial port — the package README says so explicitly — but it mirrors upstream releases closely and is updated with each Lucide version.
Install
dependencies:
flutter_lucide: ^1.52.0
flutter pub get
Usage: It’s Just the Icon Widget
There is no special LucideIcon widget. The package exposes a single class, LucideIcons, full of IconData constants — so you use Flutter’s standard Icon:
import 'package:flutter_lucide/flutter_lucide.dart';
Icon(LucideIcons.heart)
Icon(LucideIcons.search)
Icon(LucideIcons.settings)
Size and color work through the normal Icon props:
Icon(
LucideIcons.heart,
size: 32,
color: Colors.red,
)
That means it composes with everything you already do: IconButton, ListTile.leading, BottomNavigationBar, theme-based IconTheme color inheritance.
Naming Convention
Lucide uses kebab-case names (pin-x, arrow-up-right); Dart uses snake_case, so the rule is mechanical: replace hyphens with underscores.
| Lucide | Flutter |
|---|---|
pin-x | LucideIcons.pin_x |
arrow-up-right | LucideIcons.arrow_up_right |
credit-card | LucideIcons.credit_card |
file-text | LucideIcons.file_text |
Can’t remember a name? The repo ships ICONS.md — an index of every icon. Open it and Ctrl+F.
Practical Patterns
Theming. Because Icon respects IconTheme, you can set size and color once and inherit everywhere:
Theme(
data: Theme.of(context).copyWith(
iconTheme: const IconThemeData(size: 20, color: Color(0xFF64748B)),
),
child: myWidget,
)
Buttons with labels. Pair an icon with text for discoverability:
OutlinedButton.icon(
onPressed: () {},
icon: const Icon(LucideIcons.download),
label: const Text('Export'),
)
As an affordance in lists.
ListTile(
leading: const Icon(LucideIcons.circle_user),
title: const Text('Account'),
trailing: Icon(LucideIcons.chevron_right),
onTap: () {},
)
Why Lucide Over the Alternatives
vs. Material Symbols: Material’s set is enormous and officially supported, but its visual language (filled/rounded/sharp axes, variable weight) is opinionated. Lucide’s single-weight stroke style reads as neutral — it sits beside Material, Cupertino, or custom design systems without clashing.
vs. Feather (the predecessor): Lucide is a community fork of Feather that resumed active development. Feather has been effectively dormant; Lucide ships regular releases with new icons, which is why the count is now 1,866+ versus Feather’s ~287.
vs. flutter_svg + downloaded files: SVGs work, but you pay parse cost per icon at runtime, manage asset files, and lose the IconTheme integration. A compiled IconData participates in Flutter’s normal rasterization and icon-font caching.
Tree-Shaking and App Size
IconData constants are compile-time constants, so Dart’s tree shaker includes only the glyphs you actually reference. Referencing four icons doesn’t pull in all 1,866. You can verify with:
flutter build apk --analyze-size
Gotchas
- The package is unofficial. If you need a guarantee of API stability, pin the exact version (
1.52.0, not^1.52.0) and review Lucide’s release notes when bumping. - Icons can be renamed upstream. Lucide occasionally renames glyphs between major releases; a version bump could break
LucideIcons.some_name. sizedefaults tokDefaultFontSize-ish behavior fromIconTheme— set it explicitly in dense UIs like table cells.