Skip to content

Cheatsheet Flet — Riferimento rapido

Terminal window
pip install flet
import flet as ft
def main(page: ft.Page):
page.title = "Titolo"
page.add(ft.Text("Hello!"))
ft.app(target=main) # Finestra desktop
ft.app(target=main, view=ft.WEB_BROWSER) # Browser

CodiceCosa fa
page.title = "..."Titolo finestra
page.bgcolor = "..."Sfondo
page.padding = 20Spazio dai bordi
page.add(comp1, comp2)Aggiunge componenti
page.controlsLista componenti
page.controls.clear()Svuota tutto
page.update()Ridisegna la UI
page.scroll = ft.ScrollMode.AUTOScroll automatico
page.theme_mode = ft.ThemeMode.LIGHT/DARKTema
page.go("/route")Naviga a route
page.viewsPila delle viste
page.snack_bar = ft.SnackBar(...)Notifica in basso
page.dialog = ft.AlertDialog(...)Dialogo modale
page.overlay.append(...)Componenti nascosti
page.drawer = ft.NavigationDrawer(...)Menu laterale

ft.Text("Ciao") # Testo semplice
ft.Text("Testo", size=24) # Dimensione
ft.Text("Testo", weight="bold") # Grassetto
ft.Text("Testo", color="blue") # Colore
ft.Text("Testo", italic=True) # Corsivo
ft.ElevatedButton("Click", on_click=f) # 3D
ft.FilledButton("Click", on_click=f) # Pieno
ft.OutlinedButton("Click", on_click=f) # Bordo
ft.TextButton("Click", on_click=f) # Testo
ft.IconButton(ft.icons.STAR, on_click=f) # Icona
ft.TextField(label="Nome") # Con etichetta
ft.TextField(hint_text="scrivi...") # Con suggerimento
ft.TextField(value="testo") # Valore iniziale
ft.TextField(password=True) # Password
ft.TextField(multiline=True, max_lines=3) # Multi riga
ft.TextField(prefix_icon=ft.icons.PERSON) # Icona a sinistra
ft.Icon(ft.icons.HOME) # Icona
ft.Icon(ft.icons.STAR, size=40, color="amber")
ft.Image(src="url_della_foto", width=300, height=200)
ft.Image(fit=ft.ImageFit.CONTAIN) # Adatta
ft.Image(fit=ft.ImageFit.COVER) # Copre

ft.Row([comp1, comp2]) # Orizzontale
ft.Column([comp1, comp2]) # Verticale
ft.Container(content=comp, padding=10) # Contenitore
ft.Divider() # Linea separatrice
ft.ListView(spacing=10) # Lista scrollabile
ft.GridView(max_extent=150) # Griglia
ft.Row(alignment=ft.MainAxisAlignment.CENTER) # Centra riga
ft.Row(spacing=20) # Spazio tra elementi
ft.Container(padding=20, bgcolor="white") # Sfondo
ft.Container(border_radius=10) # Angoli arrotondati
ft.Container(shadow=ft.BoxShadow(blur_radius=5, color="grey")) # Ombra
ft.Container(width=300, height=200) # Dimensioni

def funzione(evento):
evento.control # Componente che ha generato l'evento
evento.control.value # Suo valore
evento.data # Dati aggiuntivi
page.update() # SEMPRE alla fine
ft.ElevatedButton("Click", on_click=funzione) # Click
ft.ElevatedButton("Click", on_click=lambda e: print("click")) # Lambda
ft.TextField(on_change=funzione) # Digitazione
ft.TextField(on_submit=funzione) # Invio premuto
ft.Checkbox(on_change=funzione) # Cambio checkbox
ft.Switch(on_change=funzione) # Cambio switch
ft.Dropdown(on_change=funzione) # Cambio selezione

page.on_route_change = route_change # Handler route
page.go("/home") # Vai a route
ft.View( # Schermata
route="/home",
appbar=ft.AppBar(title=ft.Text("Home"), bgcolor="blue"),
controls=[ft.Text("Contenuto")],
navigation_bar=ft.NavigationBar(...),
)
page.views.clear() # Reset viste
page.views.append(ft.View(...)) # Aggiungi vista
page.views.pop() # Torna indietro
ft.AppBar(
title=ft.Text("Titolo"),
bgcolor="blue",
color="white",
leading=ft.IconButton(ft.icons.MENU, on_click=f),
actions=[
ft.IconButton(ft.icons.SETTINGS, on_click=f),
],
)

# SnackBar (notifica temporanea)
page.snack_bar = ft.SnackBar(ft.Text("✅ OK"), open=True, bgcolor="green")
page.update()
# AlertDialog (conferma)
dialog = ft.AlertDialog(
title=ft.Text("Conferma"),
content=ft.Text("Sei sicuro?"),
actions=[ft.TextButton("OK", on_click=lambda e: chiudi(dialog))],
)
page.dialog = dialog
dialog.open = True
page.update()

import json
import os
def carica_dati(file):
if os.path.exists(file):
with open(file, "r") as f:
return json.load(f)
return []
def salva_dati(file, dati):
with open(file, "w") as f:
json.dump(dati, f, indent=2)

import urllib.request
import json
url = "https://api.example.com/data"
with urllib.request.urlopen(url) as response:
dati = json.loads(response.read().decode())

import threading
import time
def in_parallelo():
while True:
time.sleep(1)
# aggiorna UI
page.update()
threading.Thread(target=in_parallelo, daemon=True).start()

Terminal window
flet build apk
# APK in build/apk/