Modelli Flutter

Costruire un'app di social networking con Flutter e Back4App

54min

Introduzione

Creare un'app di social networking può essere un compito complesso, ma con Flutter e Back4App, puoi semplificare il processo di sviluppo. Questo tutorial ti guiderà nella creazione di un'app di social networking completa che include autenticazione degli utenti, gestione dei profili, feed di notizie, connessioni tra amici, messaggistica e notifiche.

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

  • Autenticazione Utente: Processi di registrazione e accesso sicuri.
  • Profili Utente: Profili modificabili con informazioni sugli utenti.
  • Feed di Notizie: Visualizzazione dei post degli amici e dell'utente.
  • Connessioni tra Amici: Possibilità di inviare e accettare richieste di amicizia.
  • Messaggistica: Chat in tempo reale tra gli utenti.
  • Notifiche: Notifiche push per richieste di amicizia, messaggi e interazioni con i post.

Prerequisiti

Per seguire questo tutorial, avrai bisogno di:

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.

Nota: Stiamo usando:

  • parse_server_sdk_flutter per l'integrazione con Back4App.
  • provider per la gestione dello stato.
  • image_picker per selezionare immagini del profilo e dei post.
  • cached_network_image per un caricamento efficiente delle immagini.
  • firebase_messaging per le notifiche push.
  • uuid per generare ID 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, "SocialApp", e clicca "Crea".

2.2. Configura i modelli di dati

Dovremo creare diverse classi in Back4App:

  • Utente: Classe integrata per l'autenticazione degli utenti.
  • Profilo: Memorizza le informazioni del profilo utente.
  • Post: Memorizza i post degli utenti.
  • RichiestaAmicizia: Gestisce le richieste di amicizia tra gli utenti.
  • Messaggio: Memorizza i messaggi tra gli utenti.

2.2.1. Classe Profilo

  1. Naviga nella "Database" sezione.
  2. Clicca su "Crea una classe".
  3. Nella finestra modale:
    • Seleziona "Personalizzato".
    • Inserisci "Profilo" come nome della classe.
    • Clicca "Crea classe".

Aggiungi le seguenti colonne:

  • utente: Digita Puntatore<_Utente>
  • nomeUtente: Digita Stringa
  • nomeCompleto: Digita Stringa
  • bio: Digita Stringa
  • immagineProfilo: Digita File

2.2.2. Classe Post

Crea un "Post" classe con le seguenti colonne:

  • utente: Tipo Pointer<_User>
  • contenuto: Tipo String
  • immagine: Tipo File
  • createdAt: Tipo Date

2.2.3. Classe FriendRequest

Crea un "FriendRequest" classe con le seguenti colonne:

  • daUtente: Tipo Pointer<_User>
  • aUtente: Tipo Pointer<_User>
  • stato: Tipo String (Valori: "in attesa", "accettato", "rifiutato")

2.2.4. Classe Messaggio

Crea un "Message" classe con le seguenti colonne:

  • daUtente: Tipo Pointer<_User>
  • aUtente: Tipo Pointer<_User>
  • contenuto: Tipo String
  • createdAt: Tipo Date

2.3. Ottenere le credenziali dell'applicazione

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

Passaggio 3 – Inizializzazione di 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 Back4App.
  • Stiamo usando ChangeNotifierProvider per gestire lo stato di autenticazione.

Passaggio 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 le Schermate di Accesso e Registrazione

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

4.2.1. Schermata di accesso

Dart


4.2.2. Schermata di registrazione

Dart


Passo 5 – Impostazione dei profili utente

5.1. Crea il servizio profilo

Aggiungi un file chiamato profile_service.dart sotto lib/services/:

Dart


5.2. Crea il modello profilo

Aggiungi un file chiamato profile.dart sotto lib/models/:

Dart


5.3. Crea Schermata Profilo

Aggiungi un file chiamato profile_screen.dart sotto lib/screens/:

Dart


Passo 6 – Implementazione dei Feed di Notizie

6.1. Crea il servizio Post

Aggiungi un file chiamato post_service.dart sotto lib/services/:

Dart


6.2. Crea il modello Post

Aggiungi un file chiamato post.dart sotto lib/models/:

Dart


6.3. Crea la schermata principale

Modifica home_screen.dart sotto lib/screens/:

Dart


Passo 7 – Aggiungere Connessioni di Amicizia

In questo passaggio, implementeremo le connessioni tra amici tra gli utenti. Gli utenti possono inviare richieste di amicizia, accettarle o rifiutarle e visualizzare la loro lista di amici. Modificheremo i modelli di dati, creeremo servizi e aggiorneremo l'interfaccia utente per supportare questa funzionalità.

7.1. Aggiornare il Modello di Dati

Abbiamo già creato la FriendRequest classe in Back4App con le seguenti colonne:

  • fromUser: Puntatore a _User
  • toUser: Puntatore a _User
  • status: Stringa (Valori: "in attesa", "accettato", "rifiutato")

Inoltre, dobbiamo tenere traccia dell'elenco degli amici di un utente. Possiamo farlo aggiungendo una friends relazione nella classe _User.

7.1.1. Aggiungi relazione amici alla classe utente

  1. In Back4App, vai alla classe User.
  2. Clicca sul pulsante "+" per aggiungere una nuova colonna.
  3. Nomina la colonna "friends" e imposta il tipo su Relation <_User>.

7.2. Crea servizio di richiesta di amicizia

Crea un file chiamato friend_service.dart sotto lib/services/:

Dart


7.3. Aggiorna l'interfaccia utente

7.3.1. Aggiungi Schermata di Ricerca Utenti

Crea un file chiamato search_users_screen.dart sotto lib/screens/:

Dart


7.3.2. Aggiungi Schermata Richieste Amici

Crea un file chiamato friend_requests_screen.dart sotto lib/screens/:

Dart


7.3.3. Aggiorna Navigazione Schermata Home

In home_screen.dart, aggiungi navigazione alle schermate di ricerca utenti e richieste di amicizia:

Dart


7.4. Aggiorna il Feed di Notizie per Mostrare i Post degli Amici

Modifica il getPosts metodo in post_service.dart per recuperare i post dall'utente e dai suoi amici.

Dart


Passo 8 – Implementazione della Messaggistica

In questo passaggio, aggiungeremo la messaggistica in tempo reale tra gli utenti utilizzando le Live Queries.

8.1. Abilita le Live Queries in Back4App

  1. Nel tuo cruscotto dell'app Back4App, vai a Impostazioni App > Impostazioni Server.
  2. Sotto URL del Server, annota il tuo URL del server (ad es., https://YOUR_APP_NAME.back4app.io).
  3. Le Live Queries sono abilitate per impostazione predefinita su Back4App.

8.2. Configura le Live Queries in Flutter

Il parse_server_sdk_flutter pacchetto include il supporto per le Live Query.

8.3. Crea il Servizio di Messaggistica

Crea un file chiamato message_service.dart sotto lib/services/:

Dart


8.4. Crea il Modello di Messaggio

Aggiungi un file chiamato message.dart sotto lib/models/:

Dart


8.5. Crea Schermata Chat

Aggiungi un file chiamato chat_screen.dart sotto lib/screens/:

Dart


8.6. Aggiorna l'interfaccia utente per avviare la chat

Puoi avviare la chat dalla lista amici o dalla schermata di ricerca utenti.

Nella lista amici, quando si visualizzano gli amici, aggiungi un pulsante per avviare una chat:

Dart


Passo 9 – Aggiunta di Notifiche Push

Implementare le notifiche push implica configurare Firebase Cloud Messaging (FCM) e integrarlo con Back4App.

9.1. Configurare Firebase Cloud Messaging

9.1.1. Configurare il Progetto Firebase

  1. Vai su Firebase Console e crea un nuovo progetto.
  2. Aggiungi un'app Android e/o iOS al tuo progetto.
    • Per Android, hai bisogno del nome del pacchetto (applicationId).
    • Per iOS, hai bisogno del Bundle Identifier.

9.1.2. Scarica i File di Configurazione

  • Per Android: Scarica google-services.json e posizionalo in android/app/.
  • Per iOS: Scarica GoogleService-Info.plist e aggiungilo al tuo progetto Xcode sotto Runner.

9.2. Aggiungi il pacchetto firebase_messaging.

9.3. Inizializza Firebase in Flutter

Modifica main.dart:

Dart


9.4. Configura Firebase Messaging

Crea un file chiamato push_notification_service.dart sotto lib/services/:

Dart


9.5. Aggiorna main.dart per inizializzare le notifiche push

In main.dart, dopo aver inizializzato Parse, inizializza il PushNotificationService:

Dart


9.6. Inviare notifiche push da Back4App

Puoi inviare notifiche push utilizzando il Cloud Code o direttamente dal tuo server.

9.6.1. Inviare Notifiche su Richiesta di Amicizia

Quando un utente invia una richiesta di amicizia, puoi inviare una notifica push al destinatario.

In friend_service.dart, modifica il sendFriendRequest metodo:

Dart


Nota: Assicurati di aver associato l'installazione con l'utente.

9.7. Associare l'Installazione con l'Utente

Quando un utente accede, associa la sua installazione con il suo account utente.

In auth_service.dart, dopo un accesso riuscito:

Dart


Nota: Le notifiche push richiedono una configurazione aggiuntiva sia sul lato client che su quello server. È necessario gestire diversi scenari, come le notifiche in background e i permessi degli utenti, che vanno oltre l'ambito di questo tutorial.



Conclusione

Congratulazioni! Hai costruito le basi di un'app di social networking utilizzando Flutter e Back4App. Questa app include autenticazione degli utenti, gestione del profilo e una funzionalità di feed di notizie. Sebbene l'implementazione di connessioni complete tra amici, messaggistica e notifiche vada oltre l'ambito di questo tutorial, ora hai la struttura necessaria per continuare ad espandere la tua app.

Prossimi Passi

  • Connessioni tra Amici: Implementa le funzionalità di richiesta di amicizia.
  • Messaggistica: Aggiungi funzionalità di chat in tempo reale utilizzando Live Queries.
  • Notifiche: Integra notifiche push per il coinvolgimento degli utenti.
  • Miglioramenti UI: Migliora l'interfaccia utente e l'esperienza utente.
  • Sicurezza: Assicurati della sicurezza dei dati e della privacy impostando ACL appropriate in Back4App.

Risorse Aggiuntive

Buon Codice!