Crea un'applicazione di chat in tempo reale in Flutter con Back4App.
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.
Per seguire questo tutorial, avrai bisogno di:
- Conoscenze di base di Flutter e Dart.
- Un IDE o editor di testo come Visual Studio Code o Android Studio.
- Parse Server SDK per Flutter aggiunto al tuo progetto.
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.
Apri il tuo terminale e esegui:
Naviga nella directory del progetto:
Apri pubspec.yaml e aggiungi le seguenti dipendenze:
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.
- Clicca su "Crea nuova App".
- Inserisci un nome per la tua applicazione, ad esempio, "ChatApp", e clicca su "Crea".
Creeremo le seguenti classi:
- Utente (Classe Parse predefinita): Memorizza le informazioni sugli utenti.
- Messaggio: Memorizza i messaggi della chat.
- ChatRoom: Rappresenta una chat tra utenti.
- 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.
- Campi:
- mittente: Pointer<_User>
- ricevente: Pointer<_User>
- chatRoomId: String
- contenuto: String
- immagine: File (Opzionale)
- creatoIl: DateTime (Aggiunto automaticamente)
- Campi:
- chatRoomId: String
- utenti: Array of Pointer<_User>
- lastMessage: String
- updatedAt: DateTime (Aggiornato automaticamente)
- Naviga a Impostazioni App > Sicurezza e Chiavi.
- Annota il tuo ID Applicazione e Chiave Client.
Apri lib/main.dart e modificalo come segue:
- Sostituisci 'YOUR_APPLICATION_ID' e 'YOUR_CLIENT_KEY' con le tue credenziali effettive di Back4App.
Crea una nuova directory chiamata services sotto lib e aggiungi un file chiamato auth_service.dart:
Crea una nuova directory chiamata screens sotto lib e aggiungi file chiamati login_screen.dart e signup_screen.dart.
Crea un metodo in AuthService per aggiornare lo stato online dell'utente:
Aggiorna i metodi di login e logout:
Crea user_service.dart sotto services:
Aggiungi la seguente dipendenza in pubspec.yaml:
Questo garantisce che tu abbia l'ultima versione con supporto per Live Query.
- Sostituisci 'YOUR_APP' con il tuo sottodominio dell'applicazione Back4App.
- 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.
Nel tuo terminale, esegui:
- 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.
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.
- 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.
Buona Programmazione!