Flutter (Dart) Foglio di riferimento

Descritte alcune costruzioni di base del linguaggio Dart

Indice

Ecco un riferimento rapido per Flutter (Dart) con i comandi e le costruzioni del linguaggio più utili:

sviluppatore che suona il flauto e gioca a darts 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:

  1. Operatore di accesso sicuro (?.)
String? nome;
print(nome?.length); // Accesso sicuro alla lunghezza se nome non è null
  1. Operatore di coalescenza (??)
String? nome;
String nomeVisualizzato = nome ?? 'Ospite';
  1. 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.