Menu
Coddy logo textTech

Dart Cheat Sheet

Ultimo aggiornamento

Hello World e struttura del programma

Ogni programma Dart parte dalla funzione main di primo livello.

OperazioneSintassi
Punto di ingressovoid main() { ... }
Stampare una rigaprint("Hello, World!");
Interpolazione di stringheprint("Hi $name");
Espressione nell'interpolazioneprint("Sum: ${a + b}");
Commento// this is a comment
Commento su più righe/* ... */
Importare una libreriaimport 'dart:math';
Eseguire un filedart run main.dart

Variabili e tipi

Dart è tipizzato staticamente ma può dedurre i tipi con var.

OperazioneSintassi
Variabile con tipo dedottovar age = 30;
Tipo esplicitoint age = 30;
Costante a tempo di compilazioneconst pi = 3.14;
Costante a runtimefinal name = getName();
Tipi di baseint, double, String, bool
Tipo dinamicodynamic x = 5;
Conversione di tipoint.parse("42"), n.toString()
Controllare il tipox is String, x as String

Null safety

I tipi non sono nullable per impostazione predefinita; aggiungi ? per permettere null.

OperazioneSintassi
Non nullable (predefinito)int count = 0;
Tipo nullableString? name;
Accesso null-awareuser?.name
Null-coalescingname ?? "default"
Assegnazione null-coalescingname ??= "default";
Asserire che non è nullname!
Inizializzazione latelate String value;
Spread null-aware[...?maybeList]

Stringhe

Le stringhe supportano apici singoli, doppi e tripli.

OperazioneSintassi
Lunghezzas.length
Maiuscolo / minuscolos.toUpperCase(), s.toLowerCase()
Interpolazione"Total: $price"
Concatenare"foo" + "bar"
Contienes.contains("ell")
Inizia / finisce cons.startsWith("he")
Dividere"a,b,c".split(",")
Sostituires.replaceAll("a", "b")
Sottostringas.substring(0, 3)
Rimuovere gli spazis.trim()

Collezioni (List, Map, Set)

Tre tipi di collezione principali con sintassi letterale.

OperazioneSintassi
Letterale Listvar nums = [1, 2, 3];
Aggiungere a una listanums.add(4);
Accesso / lunghezzanums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
Letterale Mapvar ages = {"Ada": 30};
Accesso a una Mapages["Ada"]
Letterale Setvar ids = {1, 2, 3};
Operatore spreadvar all = [...a, ...b];
If / for nelle collezioni[if (show) 1, for (n in xs) n]

Controllo del flusso

Le condizioni vanno tra parentesi; switch supporta i pattern.

OperazioneSintassi
If / elseif (x > 0) { ... } else { ... }
Ternariovar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
Ciclo forfor (var i = 0; i < 10; i++) { ... }
Ciclo for-infor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
Ciclo whilewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

Funzioni

Le funzioni sono di prima classe; la sintassi a freccia accorcia le espressioni singole.

OperazioneSintassi
Definire una funzioneint add(int a, int b) { return a + b; }
Funzione a frecciaint square(int x) => x * x;
Posizionali opzionalivoid log(String m, [int? code]) { ... }
Parametri con nomevoid box({int w = 0, int h = 0}) { ... }
Con nome obbligatorivoid box({required int w}) { ... }
Funzione anonimavar f = (x) => x * 2;
Passare come argomentonums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

Classi e costruttori

Le classi contengono stato e comportamento; i costruttori esistono in diverse forme.

OperazioneSintassi
Definire una classeclass Point { int x; int y; }
CostruttorePoint(this.x, this.y);
Costruttore con nomePoint.origin() : x = 0, y = 0;
Creare un'istanzavar p = Point(1, 2);
Metododouble dist() { ... }
Getterint get area => w * h;
Ereditarietàclass Circle extends Shape { ... }
Chiamare supersuper(args)
Classe astrattaabstract class Shape { ... }
Implementare un'interfacciaclass Dog implements Animal { ... }

Async (Future / async-await)

I future rappresentano valori disponibili più tardi; await mette in pausa finché non si risolvono.

OperazioneSintassi
Funzione asyncFuture<int> load() async { ... }
Attendere un futurevar data = await load();
Restituire un valorereturn 42; dentro una funzione async
Ritardoawait Future.delayed(Duration(seconds: 1));
Gestire gli erroritry { await load(); } catch (e) { ... }
Concatenare con thenload().then((v) => print(v));
Eseguire in paralleloawait Future.wait([a(), b()]);
Stream asincronoawait for (var x in stream) { ... }

La sintassi di Dart che usi di più, in una sola pagina. Questa cheat sheet di Dart è un riferimento rapido per il linguaggio di base: variabili e tipi, null safety, stringhe, collezioni, controllo del flusso, funzioni, classi e i future e async/await che usi per scrivere le app con Flutter.

Tutto quello che trovi qui è Dart standard e gira sull'SDK ufficiale. Copia quello che ti serve oppure prova ogni frammento dal vivo nel playground Dart, senza installare nulla.

Domande frequenti sulla cheat sheet di Dart

Questa cheat sheet di Dart è gratuita?
Sì. Questa cheat sheet di Dart è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna quando devi controllare un operatore di null safety, un metodo delle collezioni o uno schema async.
Come funziona la null safety in Dart?
In Dart ogni tipo è non nullable per impostazione predefinita: int count non può mai contenere null. Per permettere null aggiungi un ? (String? name) e il compilatore ti obbliga a gestire il caso null. Alcuni operatori rendono tutto più conciso: ?. per l'accesso null-aware, ?? per un valore di riserva e ! per asserire che un valore non è null quando ne sei certo. Così gli errori di null emergono in fase di compilazione invece che a runtime.
Cos'è un Future e come funzionano async e await?
Un Future rappresenta un valore che sarà disponibile più tardi, come il risultato di una chiamata di rete. Se marchi una funzione come async puoi usare await, che mette in pausa l'esecuzione finché il future non si completa e poi ti restituisce il valore: così scrivi codice asincrono che si legge dall'alto verso il basso come codice sincrono. Racchiudi gli await in un try/catch per gestire gli errori.
Posso esercitarmi con Dart online?
Sì. Apri il playground Dart per eseguire nel browser qualsiasi frammento di questa cheat sheet, senza installare nessun SDK. Quando vuoi un percorso strutturato, il corso interattivo gratuito di Dart di Coddy ti porta passo dopo passo da null safety e collezioni fino a classi e async/await.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dagli argomenti più comuni (variabili, null safety, controllo del flusso) fino a quelli avanzati (classi, future, async/await), così puoi usare le prime sezioni fin dal primo giorno e arrivare al resto con il tempo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Dart con Coddy

INIZIA