Flutter (Dart) Foglio di riferimento
Descritte alcune costruzioni di base del linguaggio Dart
Ecco un riferimento rapido per Flutter (Dart) con i comandi e le costruzioni del linguaggio più utili:
Sopra è un’immagine generata da AI (con il modello Flux 1 dev) del sviluppatore che suona il flauto e gioca a darts.
Comandi della CLI di Flutter
Creare un nuovo progetto Flutter:
flutter create <project_name>
Eseguire un’app Flutter:
flutter run
Costruire un APK di rilascio:
flutter build apk
Analizzare il codice Dart:
flutter analyze
Eseguire i test:
flutter test
Ottenere i pacchetti:
flutter pub get
Aggiornare Flutter:
flutter upgrade
Verificare l’installazione di Flutter:
flutter doctor
Costruzioni del linguaggio Dart
Variabili e tipi di dati:
int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Può essere qualsiasi tipo';
final constantVar = 'Non può essere riassegnato';
const compiletimeConstant = 'Costante a tempo di compilazione';
Sicurezza null:
String? nullableString;
String nonNullableString = 'Ciao';
Funzioni:
void simplePrint() {
print('Ciao');
}
int add(int a, int b) => a + b;
void namedParams({required String name, int? age}) {
// Corpo della funzione
}
void optionalParams(String name, [int? age]) {
// Corpo della funzione
}
Flusso di controllo:
if (condizione) {
// codice
} else if (altraCondizione) {
// codice
} else {
// codice
}
for (var i = 0; i < 5; i++) {
// codice
}
while (condizione) {
// codice
}
switch (variabile) {
case valore1:
// codice
break;
default:
// codice
}
Liste e mappe:
List<int> numeri = [1, 2, 3];
Map<String, int> età = {'Alice': 30, 'Bob': 25};
Classi:
class Persona {
String nome;
int età;
Persona(this.nome, this.età);
void saluta() {
print('Ciao, sono $nome');
}
}
Programmazione asincrona:
Future<void> caricaDati() async {
try {
var risultato = await alcunaOperazioneAsincrona();
print(risultato);
} catch (e) {
print('Errore: $e');
}
}
Flussi:
Stream<int> flussoContatore(int max) async* {
for (int i = 0; i < max; i++) {
yield i;
}
}
Gestione degli errori:
try {
// Codice che potrebbe generare un'eccezione
} on SpecificException {
// Gestisci un'eccezione specifica
} catch (e) {
// Gestisci qualsiasi eccezione
} finally {
// Sempre eseguito
}
Questo riferimento rapido copre i comandi Flutter e le costruzioni del linguaggio Dart più essenziali, fornendo un riferimento veloce per gli sviluppatori Flutter.
Sicurezza null in Flutter / Dart
La gestione della sicurezza null in Dart per le app Flutter è cruciale per scrivere codice robusto e privo di errori. Ecco una guida semplice su come lavorare con la sicurezza null:
Dichiarazione delle variabili
Variabili non nullable:
int età = 30;
String nome = 'John';
Variabili nullable:
int? etàNullable;
String? nomeNullable;
Lavorare con tipi nullable
Operatori di sicurezza null:
- Operatore di accesso sicuro (?.)
String? nome;
print(nome?.length); // Accesso sicuro alla lunghezza se nome non è null
- Operatore di coalescenza (??)
String? nome;
String nomeVisualizzato = nome ?? 'Ospite';
- Operatore di assegnazione sicura (??=)
String? nome;
nome ??= 'John'; // Assegna 'John' se nome è null
Operatore di affermazione null (!) Utilizza questo operatore con cautela, poiché può portare a errori in fase di esecuzione se il valore è null:
String? nomeNullable = 'John';
String nomeNonNullable = nomeNullable!;
Analisi del flusso
L’analisi del flusso di Dart aiuta a determinare quando una variabile nullable è sicura da utilizzare:
String? getNome() => 'John';
void stampaNome() {
String? nome = getNome();
if (nome != null) {
print(nome.length); // Sicuro da utilizzare nome qui
}
}
Variabili late
Utilizza late
per variabili non nullable inizializzate dopo la dichiarazione:
late String nomeInizializzatoInSeguito;
void inizializzaNome() {
nomeInizializzatoInSeguito = 'John';
}
Gestione dei parametri nullable
void saluta(String nome, {String? titolo}) {
if (titolo != null) {
print('Ciao, $titolo $nome');
} else {
print('Ciao, $nome');
}
}
Lavorare con le collezioni
Liste nullable:
List<String>? listaNullable;
List<String?> listaDiStringheNullable = ['Ciao', null, 'Mondo'];
Filtrare i valori null:
List<String?> listaMista = ['a', null, 'b', null, 'c'];
List<String> listaNonNull = listaMista.whereType<String>().toList();
Seguendo queste pratiche, puoi gestire efficacemente la sicurezza null nei tuoi applicazioni Dart e Flutter, riducendo il rischio di errori legati al null e migliorando la qualità complessiva del codice.