Complete List of All Available Flutter Icons: Material and Cupertino Reference
Flutter provides two comprehensive icon sets—Material Design icons via the Icons class and iOS-style icons via the CupertinoIcons class—both defined as compile-time constants in the Flutter SDK source code.
The complete list of all available Flutter icons is contained within two authoritative source files in the flutter/flutter repository. These files define every icon as type-safe IconData constants that map directly to embedded font glyphs, ensuring zero runtime overhead and full IDE auto-completion support.
Where Flutter Icons Are Defined in the Source Code
According to the flutter/flutter source code, Flutter ships with two primary icon libraries defined as public classes containing static constants. These classes reside in specific library files within the packages/flutter directory.
Material Design Icons (Icons class)
The Material Design icon set is exposed through the Icons class located in packages/flutter/lib/src/material/icons.dart. This file contains hundreds of static const IconData declarations—such as Icons.camera, Icons.add_circle_outline, and Icons.access_alarm—that map to the Material Icons font embedded in the Flutter SDK. The Flutter framework generates these constants from the official Material Icons glyph set, providing compile-time safety and autocomplete functionality in Dart-capable IDEs.
Cupertino Icons (CupertinoIcons class)
For iOS-style applications, the CupertinoIcons class in packages/flutter/lib/src/cupertino/icons.dart provides the complete list of available Flutter icons styled after Apple's SF Symbols. This file declares constants like CupertinoIcons.home, CupertinoIcons.share, and CupertinoIcons.person as const IconData objects. These icons render using the Cupertino font built into the framework, ensuring native-looking visuals on Apple platforms.
How to Use Icons from the Complete Flutter List
Both icon sets follow identical instantiation patterns using the core Icon widget defined in packages/flutter/lib/src/widgets/icon.dart. The Icon widget accepts an IconData object—which both Icons and CupertinoIcons provide—and renders the corresponding vector glyph.
Using Material Icons
To use any icon from the Material set, import the Material library and reference the constant via the Icons class:
import 'package:flutter/material.dart';
class MaterialIconDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Icon(
Icons.access_alarm,
size: 48,
color: Colors.deepPurple,
);
}
}
Using Cupertino Icons
For Cupertino icons, import the Cupertino library and access constants through the CupertinoIcons class:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class CupertinoIconDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Icon(
CupertinoIcons.home,
size: 48,
color: CupertinoColors.activeBlue,
);
}
}
How to Programmatically Access the Complete Icon List
While the source files provide the authoritative enumeration, you can programmatically inspect all available Flutter icons at runtime using Dart's reflection capabilities. This approach reads the static const members defined in packages/flutter/lib/src/material/icons.dart and packages/flutter/lib/src/cupertino/icons.dart.
Important limitation: The dart:mirrors library only functions in Dart VM environments (such as desktop tests or command-line tools), not in Flutter release builds compiled to native code.
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'dart:mirrors';
void printAllIconNames() {
// Material icons enumeration
final materialMembers = reflectClass(Icons).staticMembers;
for (var entry in materialMembers.entries) {
if (entry.value is VariableMirror) {
print('Material: ${entry.key}');
}
}
// Cupertino icons enumeration
final cupertinoMembers = reflectClass(CupertinoIcons).staticMembers;
for (var entry in cupertinoMembers.entries) {
if (entry.value is VariableMirror) {
print('Cupertino: ${entry.key}');
}
}
}
Summary
- The complete list of all available Flutter icons is defined as
static const IconDatamembers in two files:packages/flutter/lib/src/material/icons.dart(Material) andpackages/flutter/lib/src/cupertino/icons.dart(Cupertino). - Compile-time constants ensure type safety and zero runtime overhead, with icons embedded directly into the compiled application without asset loading.
- The
Iconwidget inpackages/flutter/lib/src/widgets/icon.dartrenders these glyphs by acceptingIconDataobjects from either theIconsorCupertinoIconsclasses. - Runtime enumeration is possible via
dart:mirrorsfor tooling purposes, though this API is unavailable in release builds.
Frequently Asked Questions
How do I see all available icons in Flutter?
Browse the source files packages/flutter/lib/src/material/icons.dart and packages/flutter/lib/src/cupertino/icons.dart in the flutter/flutter repository. These files contain the exhaustive list of every public icon constant. Alternatively, use IDE autocomplete after typing Icons. or CupertinoIcons. to scroll through available options with visual previews.
What is the difference between Material Icons and CupertinoIcons?
Material Icons (Icons class) follow Google's Material Design language and work across all platforms, while CupertinoIcons (CupertinoIcons class) replicate Apple's SF Symbols for native iOS aesthetics. Both are defined in separate files within the Flutter SDK and use different underlying font files—material-icons.ttf for Material and the Cupertino font for iOS-style icons.
Can I use dart:mirrors to list icons in a production Flutter app?
No. The dart:mirrors library is not supported in Flutter release builds (AOT compilation). Reflection only works in Dart VM environments such as desktop development tools or automated test suites. For production apps requiring dynamic icon selection, hardcode the specific IconData constants you need or load icon definitions from JSON assets at runtime.
How are Flutter icons stored internally?
Each icon is stored as an IconData instance defined in packages/flutter/lib/src/painting/icon_data.dart. These objects contain the font family name, Unicode code point, and optional font package identifiers. The actual vector glyphs reside in font files (TTF) embedded in the Flutter framework, which the Icon widget renders using the IconData configuration.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →