Flutter Templates

Crea un'applicazione di chat in tempo reale in Flutter con Back4App.

36min

Introduzione

Creare un'applicazione di chat implica la gestione di dati in tempo reale, autenticazione degli utenti, gestione dei media e archiviazione efficiente dei dati. In questo tutorial, imparerai a costruire un'applicazione di chat in tempo reale in Flutter che supporta conversazioni uno a uno e di gruppo, stati dei messaggi e condivisione di media. Utilizzeremo Back4App—un backend-as-a-service alimentato da Parse Server—per gestire le funzionalità di backend.

Alla fine di questo tutorial, avrai un'app di chat completamente funzionale con le seguenti caratteristiche:

  • Autenticazione Utente: Processi di registrazione e accesso sicuri.
  • Messaggistica in Tempo Reale: Consegna istantanea dei messaggi utilizzando Live Queries.
  • Presenza Utente: Monitoraggio dello stato online/offline degli utenti.
  • Archiviazione Media: Invio e ricezione di immagini nelle chat.
  • Cronologia Messaggi: Persistenza delle cronologie chat per gli utenti.

Prerequisiti

Per seguire questo tutorial, avrai bisogno di:

  • Flutter SDK installato sul tuo computer. Segui la guida ufficiale all'installazione di Flutter.
  • Conoscenze di base di Flutter e Dart.
  • Un IDE o editor di testo come Visual Studio Code o Android Studio.
  • Un account Back4App. Registrati per un account gratuito su Back4App.
  • Parse Server SDK per Flutter aggiunto al tuo progetto.

Panoramica

Costruiremo un'applicazione di chat con i seguenti componenti:

  • Autenticazione Utente: Gli utenti possono registrarsi e accedere.
  • Elenco Contatti: Visualizza un elenco di utenti con cui chattare.
  • Schermata Chat: Interfaccia di messaggistica in tempo reale.
  • Condivisione Media: Possibilità di inviare e ricevere immagini.
  • Stato Online: Visualizza lo stato online/offline degli utenti.

Passo 1 – Configurazione del Progetto Flutter

1.1. Crea un Nuovo Progetto Flutter

Apri il tuo terminale e esegui:

Bash


Naviga nella directory del progetto:

Bash


1.2. Aggiungi Dipendenze

Apri pubspec.yaml e aggiungi le seguenti dipendenze:

YAML


Esegui flutter pub get per installare i pacchetti.

  • parse_server_sdk_flutter: Interagisci con Back4App.
  • image_picker: Seleziona immagini dalla galleria o dalla fotocamera.
  • cached_network_image: Caricamento e caching delle immagini efficienti.
  • uuid: Genera identificatori unici.


Passo 2 – Configurazione di Back4App

2.1. Crea una nuova applicazione Back4App

  1. Accedi al tuo dashboard di Back4App.
  2. Clicca su "Crea nuova App".
  3. Inserisci un nome per la tua applicazione, ad esempio, "ChatApp", e clicca su "Crea".

2.2. Configura classi e modello di dati

Creeremo le seguenti classi:

  1. Utente (Classe Parse predefinita): Memorizza le informazioni sugli utenti.
  2. Messaggio: Memorizza i messaggi della chat.
  3. ChatRoom: Rappresenta una chat tra utenti.

2.2.1. Classe Utente

  • Campi:
    • nome utente: String
    • password: String
    • email: String
    • èOnline: Boolean
    • avatar: File (Opzionale)

Il User classe è integrata; dobbiamo solo assicurarci che abbia i campi aggiuntivi.

2.2.2. Classe Messaggio

  • Campi:
    • mittente: Pointer<_User>
    • ricevente: Pointer<_User>
    • chatRoomId: String
    • contenuto: String
    • immagine: File (Opzionale)
    • creatoIl: DateTime (Aggiunto automaticamente)

2.2.3. Classe ChatRoom

  • Campi:
    • chatRoomId: String
    • utenti: Array of Pointer<_User>
    • lastMessage: String
    • updatedAt: DateTime (Aggiornato automaticamente)

2.3. Ottenere le credenziali dell'applicazione

  1. Naviga a Impostazioni App > Sicurezza e Chiavi.
  2. Annota il tuo ID Applicazione e Chiave Client.

Passo 3 – Inizializzare Parse nella tua app Flutter

Apri lib/main.dart e modificalo come segue:

Dart

  • Sostituisci 'YOUR_APPLICATION_ID' e 'YOUR_CLIENT_KEY' con le tue credenziali effettive di Back4App.

Passo 4 – Implementazione dell'autenticazione utente

4.1. Crea il servizio di autenticazione

Crea una nuova directory chiamata services sotto lib e aggiungi un file chiamato auth_service.dart:

Dart


4.2. Crea Schermate di Accesso e Registrazione

Crea una nuova directory chiamata screens sotto lib e aggiungi file chiamati login_screen.dart e signup_screen.dart.

4.2.1. Schermata di Accesso

Dart


4.2.2. Schermata di registrazione

Dart


Passo 5 – Implementazione della Presenza Utente

5.1. Aggiorna lo Stato Online dell'Utente

Crea un metodo in AuthService per aggiornare lo stato online dell'utente:

Dart


5.2. Imposta lo Stato Online al Login e Logout

Aggiorna i metodi di login e logout:

Dart


Passo 6 – Visualizzazione della lista dei contatti

6.1. Crea il servizio utente

Crea user_service.dart sotto services:

Dart


6.2. Crea la schermata principale

Dart


Passaggio 7 – Implementazione della messaggistica in tempo reale con query live

7.1. Configurare il client di query live

Aggiungi la seguente dipendenza in pubspec.yaml:

YAML


Questo garantisce che tu abbia l'ultima versione con supporto per Live Query.

7.2. Inizializza Live Query in main.dart

Dart

  • Sostituisci 'YOUR_APP' con il tuo sottodominio dell'applicazione Back4App.

7.3. Crea Schermata Chat

Dart


Spiegazione

  • ParseLiveListWidget: Un widget che ascolta gli aggiornamenti delle query in tempo reale e si ricostruisce quando i dati cambiano.
  • sendMessage(): Invia un messaggio di testo o un'immagine.
  • pickImage(): Usa image_picker per selezionare un'immagine e inviarla come messaggio.
  • setupLiveQuery(): Configura una query in tempo reale per ascoltare nuovi messaggi nella chat.

Passo 8 – Testare l'App

8.1. Esegui l'App

Nel tuo terminale, esegui:

Bash


8.2. Test Messaging

  • Apri l'app su due dispositivi o emulatori.
  • Registrati o accedi con account utente diversi.
  • Da un account, seleziona l'altro utente dalla lista dei contatti.
  • Invia messaggi e immagini; dovrebbero apparire in tempo reale su entrambi i dispositivi.

Conclusione

Congratulazioni! Hai costruito un'applicazione di chat in tempo reale in Flutter utilizzando Back4App. Questa app supporta:

  • Autenticazione Utente: Accesso e registrazione sicuri.
  • Messaggistica in Tempo Reale: Aggiornamenti istantanei utilizzando Live Queries.
  • Presenza Utente: Monitoraggio dello stato online/offline.
  • Condivisione Media: Invio e ricezione di immagini.
  • Cronologia Messaggi: Persistenza dei messaggi di chat.

Prossimi Passi

  • Chat di Gruppo: Estendere l'app per supportare conversazioni di gruppo.
  • Stati dei Messaggi: Implementare ricevute di lettura e indicatori di digitazione.
  • Notifiche Push: Inviare notifiche per nuovi messaggi quando l'app è in background.
  • Immagini del Profilo: Consentire agli utenti di caricare avatar.
  • Miglioramenti della Sicurezza: Proteggere i dati con ACL e permessi basati sui ruoli.

Risorse Aggiuntive

Buona Programmazione!