Documentation Index
Fetch the complete documentation index at: https://mintlify.com/flet-dev/flet/llms.txt
Use this file to discover all available pages before exploring further.
Flet provides two comprehensive icon sets: Material Icons for Material Design and Cupertino Icons for iOS-style design.
Icons (Material Design)
The Icons class provides access to the complete Material Design icon set with over 7,000 icons.
Usage
import flet as ft
def main(page: ft.Page):
page.add(
ft.Icon(ft.Icons.HOME),
ft.Icon(ft.Icons.FAVORITE, color=ft.Colors.PINK),
ft.Icon(ft.Icons.SETTINGS, size=40),
)
ft.app(target=main)
Common Material Icons
Here are some frequently used Material icons:
Navigation:
ft.Icons.HOME
ft.Icons.ARROW_BACK
ft.Icons.ARROW_FORWARD
ft.Icons.MENU
ft.Icons.CLOSE
ft.Icons.CHEVRON_LEFT
ft.Icons.CHEVRON_RIGHT
ft.Icons.EXPAND_MORE
ft.Icons.EXPAND_LESS
Actions:
ft.Icons.ADD
ft.Icons.EDIT
ft.Icons.DELETE
ft.Icons.SAVE
ft.Icons.SEARCH
ft.Icons.FILTER_LIST
ft.Icons.SORT
ft.Icons.REFRESH
ft.Icons.SETTINGS
ft.Icons.MORE_VERT
ft.Icons.MORE_HORIZ
Communication:
ft.Icons.EMAIL
ft.Icons.PHONE
ft.Icons.MESSAGE
ft.Icons.CHAT
ft.Icons.VIDEOCAM
ft.Icons.CALL
Content:
ft.Icons.COPY
ft.Icons.CONTENT_CUT
ft.Icons.CONTENT_PASTE
ft.Icons.LINK
ft.Icons.FLAG
ft.Icons.ATTACHMENT
ft.Icons.CLOUD_UPLOAD
ft.Icons.CLOUD_DOWNLOAD
Media:
ft.Icons.PLAY_ARROW
ft.Icons.PAUSE
ft.Icons.STOP
ft.Icons.SKIP_NEXT
ft.Icons.SKIP_PREVIOUS
ft.Icons.VOLUME_UP
ft.Icons.VOLUME_DOWN
ft.Icons.VOLUME_MUTE
File:
ft.Icons.FOLDER
ft.Icons.FOLDER_OPEN
ft.Icons.INSERT_DRIVE_FILE
ft.Icons.CLOUD
ft.Icons.UPLOAD
ft.Icons.DOWNLOAD
User Interface:
ft.Icons.CHECK
ft.Icons.CHECK_CIRCLE
ft.Icons.CANCEL
ft.Icons.ERROR
ft.Icons.WARNING
ft.Icons.INFO
ft.Icons.HELP
ft.Icons.NOTIFICATIONS
ft.Icons.VISIBILITY
ft.Icons.VISIBILITY_OFF
Social:
ft.Icons.FAVORITE
ft.Icons.FAVORITE_BORDER
ft.Icons.THUMB_UP
ft.Icons.THUMB_DOWN
ft.Icons.SHARE
ft.Icons.PERSON
ft.Icons.PEOPLE
ft.Icons.GROUP
Places:
ft.Icons.LOCATION_ON
ft.Icons.LOCATION_OFF
ft.Icons.MAP
ft.Icons.PLACE
ft.Icons.DIRECTIONS
Icon Variants
Many Material icons come in multiple styles:
- Filled (default):
ft.Icons.FAVORITE
- Outlined:
ft.Icons.FAVORITE_BORDER, ft.Icons.HOME_OUTLINED
- Rounded:
ft.Icons.HOME_ROUNDED
- Sharp:
ft.Icons.HOME_SHARP
Example:
import flet as ft
def main(page: ft.Page):
page.add(
ft.Row([
ft.Icon(ft.Icons.HOME), # Filled
ft.Icon(ft.Icons.HOME_OUTLINED), # Outlined
ft.Icon(ft.Icons.HOME_ROUNDED), # Rounded
ft.Icon(ft.Icons.HOME_SHARP), # Sharp
])
)
ft.app(target=main)
random Method
Select a random icon from the Material Icons collection.
def random(
exclude: list[IconData] | None = None,
weights: dict[IconData, int] | None = None,
) -> IconData | None
Parameters:
exclude: List of icons to exclude from random selection
weights: Dictionary mapping icons to their selection weights
Returns:
- A randomly selected IconData, or None if all icons are excluded
Example:
import flet as ft
def main(page: ft.Page):
def add_random_icon(e):
random_icon = ft.Icons.random(
exclude=[ft.Icons.DELETE, ft.Icons.WARNING]
)
page.add(ft.Icon(random_icon))
page.update()
page.add(
ft.ElevatedButton("Add Random Icon", on_click=add_random_icon)
)
ft.app(target=main)
CupertinoIcons (iOS Design)
The CupertinoIcons class provides access to the iOS-style Cupertino icon set.
Usage
import flet as ft
def main(page: ft.Page):
page.add(
ft.Icon(ft.CupertinoIcons.HOME),
ft.Icon(ft.CupertinoIcons.HEART, color=ft.Colors.PINK),
ft.Icon(ft.CupertinoIcons.SETTINGS, size=40),
)
ft.app(target=main)
Common Cupertino Icons
Navigation:
ft.CupertinoIcons.HOME
ft.CupertinoIcons.BACK
ft.CupertinoIcons.FORWARD
ft.CupertinoIcons.CHEVRON_LEFT
ft.CupertinoIcons.CHEVRON_RIGHT
ft.CupertinoIcons.CHEVRON_UP
ft.CupertinoIcons.CHEVRON_DOWN
Actions:
ft.CupertinoIcons.ADD
ft.CupertinoIcons.ADD_CIRCLED
ft.CupertinoIcons.MINUS
ft.CupertinoIcons.MINUS_CIRCLED
ft.CupertinoIcons.DELETE
ft.CupertinoIcons.SEARCH
ft.CupertinoIcons.SETTINGS
ft.CupertinoIcons.REFRESH
Communication:
ft.CupertinoIcons.MAIL
ft.CupertinoIcons.PHONE
ft.CupertinoIcons.CHAT_BUBBLE
ft.CupertinoIcons.VIDEOCAM
Social:
ft.CupertinoIcons.HEART
ft.CupertinoIcons.HEART_FILL
ft.CupertinoIcons.STAR
ft.CupertinoIcons.STAR_FILL
ft.CupertinoIcons.SHARE
ft.CupertinoIcons.PERSON
ft.CupertinoIcons.PERSON_CROP_CIRCLE
Media:
ft.CupertinoIcons.PLAY
ft.CupertinoIcons.PLAY_FILL
ft.CupertinoIcons.PAUSE
ft.CupertinoIcons.PAUSE_FILL
ft.CupertinoIcons.VOLUME_UP
ft.CupertinoIcons.VOLUME_DOWN
ft.CupertinoIcons.VOLUME_MUTE
Filled vs Outlined
Cupertino icons often come in both filled and outlined versions:
import flet as ft
def main(page: ft.Page):
page.add(
ft.Row([
ft.Icon(ft.CupertinoIcons.HEART), # Outlined
ft.Icon(ft.CupertinoIcons.HEART_FILL), # Filled
])
)
ft.app(target=main)
random Method
Select a random icon from the Cupertino Icons collection.
def random(
exclude: list[IconData] | None = None,
weights: dict[IconData, int] | None = None,
) -> IconData | None
Parameters:
exclude: List of icons to exclude from random selection
weights: Dictionary mapping icons to their selection weights
Returns:
- A randomly selected IconData, or None if all icons are excluded
Example:
import flet as ft
def main(page: ft.Page):
def add_random_icon(e):
random_icon = ft.CupertinoIcons.random()
page.add(ft.Icon(random_icon))
page.update()
page.add(
ft.ElevatedButton("Add Random Cupertino Icon", on_click=add_random_icon)
)
ft.app(target=main)
Icon Component
Both icon sets are used with the Icon control:
ft.Icon(
name: IconData,
size: Optional[float] = None,
color: Optional[ColorValue] = None,
)
Example with customization:
import flet as ft
def main(page: ft.Page):
page.add(
ft.Row([
ft.Icon(
ft.Icons.FAVORITE,
color=ft.Colors.PINK,
size=24,
),
ft.Icon(
ft.Icons.FAVORITE,
color=ft.Colors.RED,
size=48,
),
ft.Icon(
ft.CupertinoIcons.HEART_FILL,
color=ft.Colors.RED_400,
size=36,
),
])
)
ft.app(target=main)
When to Use Each Icon Set
Use Material Icons when:
- Building Material Design apps
- Targeting Android or web platforms
- You want filled, outlined, rounded, and sharp variants
- You need the widest selection of icons (7,000+)
Use Cupertino Icons when:
- Building iOS-style apps
- You want native iOS appearance
- You prefer Apple’s design language
- Building cross-platform apps that should feel native on iOS
Practical Examples
Navigation Bar with Icons
import flet as ft
def main(page: ft.Page):
page.navigation_bar = ft.NavigationBar(
destinations=[
ft.NavigationBarDestination(
icon=ft.Icons.HOME_OUTLINED,
selected_icon=ft.Icons.HOME,
label="Home",
),
ft.NavigationBarDestination(
icon=ft.Icons.SEARCH_OUTLINED,
selected_icon=ft.Icons.SEARCH,
label="Search",
),
ft.NavigationBarDestination(
icon=ft.Icons.PERSON_OUTLINE,
selected_icon=ft.Icons.PERSON,
label="Profile",
),
]
)
ft.app(target=main)
import flet as ft
def main(page: ft.Page):
def handle_click(e):
print(f"Clicked {e.control.data}")
page.add(
ft.Row([
ft.IconButton(
icon=ft.Icons.FAVORITE_BORDER,
selected_icon=ft.Icons.FAVORITE,
on_click=handle_click,
data="favorite",
),
ft.IconButton(
icon=ft.Icons.DELETE_OUTLINE,
icon_color=ft.Colors.RED_400,
on_click=handle_click,
data="delete",
),
ft.IconButton(
icon=ft.Icons.SHARE,
on_click=handle_click,
data="share",
),
])
)
ft.app(target=main)
List with Leading Icons
import flet as ft
def main(page: ft.Page):
page.add(
ft.ListView(
controls=[
ft.ListTile(
leading=ft.Icon(ft.Icons.FOLDER),
title=ft.Text("Documents"),
),
ft.ListTile(
leading=ft.Icon(ft.Icons.IMAGE),
title=ft.Text("Photos"),
),
ft.ListTile(
leading=ft.Icon(ft.Icons.MUSIC_NOTE),
title=ft.Text("Music"),
),
],
height=200,
)
)
ft.app(target=main)
Status Icons
import flet as ft
def main(page: ft.Page):
page.add(
ft.Column([
ft.Row([
ft.Icon(ft.Icons.CHECK_CIRCLE, color=ft.Colors.GREEN),
ft.Text("Success"),
]),
ft.Row([
ft.Icon(ft.Icons.ERROR, color=ft.Colors.RED),
ft.Text("Error"),
]),
ft.Row([
ft.Icon(ft.Icons.WARNING, color=ft.Colors.AMBER),
ft.Text("Warning"),
]),
ft.Row([
ft.Icon(ft.Icons.INFO, color=ft.Colors.BLUE),
ft.Text("Info"),
]),
])
)
ft.app(target=main)