Skip to content
Blog

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.

LucideFlutter
pin-xLucideIcons.pin_x
arrow-up-rightLucideIcons.arrow_up_right
credit-cardLucideIcons.credit_card
file-textLucideIcons.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.
  • size defaults to kDefaultFontSize-ish behavior from IconTheme — set it explicitly in dense UIs like table cells.

Further Reading