Modelli Flutter

Come costruire un'app di immersione linguistica in AR con Flutter e Back4App

40min

Introduzione

In questo tutorial, costruirai un'app di Immersione Linguistica in Realtà Aumentata (AR) utilizzando Flutter e Back4App. L'app sfrutta la tecnologia AR per riconoscere oggetti attraverso la fotocamera del dispositivo, sovrapporre traduzioni, fornire informazioni culturali e monitorare i progressi dell'utente. Alla fine di questo tutorial, avrai un'app funzionale che aiuta gli utenti ad imparare nuove lingue in contesti reali.

Prerequisiti

Per completare questo tutorial, avrai bisogno di:

Passo 1 – Configurazione del Progetto Flutter

Per prima cosa, configura un nuovo progetto Flutter dove svilupperai l'app di Immersione Linguistica in AR.

1.1. Crea un Nuovo Progetto Flutter

Apri il tuo terminale e esegui il seguente comando:

Bash


Questo comando crea un nuovo progetto Flutter chiamato ar_language_immersion_app.

1.2. Apri il Progetto nel Tuo IDE

Naviga nella directory del progetto e aprila nel tuo IDE preferito (ad esempio, Visual Studio Code, Android Studio):

Bash


Passo 2 – Configurazione del Backend di Back4App

Configura il tuo backend su Back4App per gestire i dati degli utenti, le traduzioni, le informazioni culturali e il tracciamento dei progressi degli utenti.

2.1. Crea una nuova applicazione su Back4App

  1. Accedi al tuo account Back4App.
  2. Clicca su "Crea nuova App".
  3. Inserisci "AR Language Immersion App" come nome dell'app.
  4. Clicca su "Crea".

2.2. Impostare il modello di dati

Definisci le classi secondo il modello di dati:

  • Utente
  • OggettoRiconoscibile
  • Traduzione
  • InfoCulturale
  • ProgressoUtente

2.2.1. Crea la classe Utente

La classe Utente è una classe predefinita in Back4App per gestire l'autenticazione degli utenti.

  1. Naviga su Core > Browser nel tuo dashboard di Back4App.
  2. Vedrai la classe _User già disponibile.

2.2.2. Crea la classe RecognizableObject

  1. Clicca su "Crea una classe".
  2. Scegli "Personalizzato" e chiamalo "RecognizableObject".
  3. Clicca "Crea classe".

Aggiungi le seguenti colonne:

  • Nome (Stringa)
  • Categoria (Stringa)
  • ImageReference (File)

2.2.3. Crea la classe Translation

  1. Crea un'altra classe chiamata "Translation".
  2. Aggiungi le seguenti colonne:
  • objectId (Stringa) [Predefinito]
  • ObjectID (Puntatore a RecognizableObject)
  • LanguageCode (Stringa)
  • TranslatedText (Stringa)
  • PronunciationGuide (Stringa)
  • AudioFileReference (File)

2.2.4. Crea la classe CulturalInfo

  1. Crea una classe chiamata "CulturalInfo".
  2. Aggiungi le seguenti colonne:
  • ObjectID (Puntatore a RecognizableObject)
  • LanguageCode (Stringa)
  • ShortDescription (Stringa)
  • DetailedInformation (Stringa)
  • RelatedMediaReferences (Array di File)

2.2.5. Crea la classe UserProgress

  1. Crea una classe chiamata "UserProgress".
  2. Aggiungi le seguenti colonne:
  • UserID (Puntatore all'utente)
  • RecognizedObjects (Array di ID di oggetti riconoscibili)
  • TranslationsViewed (Array di ID di traduzioni)
  • CulturalInfoAccessed (Array di ID di informazioni culturali)
  • LearningStreaks (Numero)
  • ProficiencyScores (Dizionario)

2.3. Recupera le chiavi dell'applicazione

  1. Vai a Impostazioni App > Sicurezza e Chiavi.
  2. Annota il tuo ID dell'applicazione e Chiave client; ne avrai bisogno per inizializzare Parse nella tua app Flutter.

Passo 3 – Integrazione del SDK Parse in Flutter

Integra il Parse SDK fornito da Back4App nel tuo progetto Flutter per comunicare con il backend.

3.1. Aggiungi Dipendenze

Apri pubspec.yaml e aggiungi le seguenti dipendenze:

YAML


Esegui il comando:

Bash


Nota: Poiché non esiste un plugin AR ufficiale chiamato augmented_reality_plugin, potresti dover utilizzare plugin come arcore_flutter_plugin per Android e arkit_plugin per iOS. Regola di conseguenza in base alle tue piattaforme target.

3.2. Inizializza Parse nella tua App

In lib/main.dart, inizializza Parse durante l'avvio dell'app:

Dart


Sostituisci 'YOUR_APPLICATION_ID' e 'YOUR_CLIENT_KEY' con le chiavi che hai ottenuto da Back4App.

Passo 4 – Implementazione dell'autenticazione utente

Implementare le funzionalità di registrazione e accesso degli utenti.

4.1. Creare la schermata di autenticazione

Creare un nuovo file lib/screens/auth_screen.dart.

Dart


4.2. Aggiornare main.dart per includere le rotte

In lib/main.dart, aggiorna il tuo MaterialApp per includere le rotte:

Dart


Passo 5 – Implementazione del Riconoscimento degli Oggetti AR

Configura la funzionalità AR per riconoscere oggetti utilizzando la fotocamera del dispositivo.

5.1. Configurare i Permessi

Per Android e iOS, è necessario richiedere i permessi per la fotocamera.

Android

In android/app/src/main/AndroidManifest.xml, aggiungi:

XML


iOS

In ios/Runner/Info.plist, aggiungi:

XML


5.2. Implementare la Vista AR

Crea un nuovo file lib/screens/ar_view_screen.dart.

Dart


Nota: Implementare il riconoscimento completo degli oggetti AR è complesso e potrebbe richiedere l'integrazione con modelli di machine learning come TensorFlow Lite o l'uso di piattaforme come il ML Kit di Google. Per questo tutorial, simuleremo il riconoscimento degli oggetti.

5.3. Simulare il Riconoscimento degli Oggetti

A scopo dimostrativo, simuleremo il riconoscimento degli oggetti visualizzando oggetti predefiniti.

Aggiorna ar_view_screen.dart:

Dart


Passo 6 – Visualizzazione delle Traduzioni Sovrapposte

Recupera le traduzioni da Back4App e visualizzale come sovrapposizioni.

6.1. Recupera i Dati di Traduzione

In ar_view_screen.dart, aggiungi un metodo per recuperare le traduzioni:

Dart


6.2. Aggiorna l'interfaccia utente per mostrare la traduzione

Modifica il build metodo:

Dart


Passo 7 – Fornire informazioni culturali

Recupera e visualizza informazioni culturali relative all'oggetto riconosciuto.

7.1. Recupera informazioni culturali

Aggiungi un metodo in ar_view_screen.dart:

Dart


7.2. Aggiorna l'interfaccia utente per mostrare informazioni culturali

Modifica il build metodo:

Dart


Passo 8 – Monitoraggio dei progressi dell'utente

Aggiorna i progressi dell'utente ogni volta che visualizzano una traduzione o informazioni culturali.

8.1. Aggiorna UserProgress in Back4App

Aggiungi un metodo per aggiornare i progressi:

Dart


8.2. Chiama updateUserProgress quando un oggetto viene riconosciuto

In setState dove selectedObject viene aggiornato:

Dart


Passo 9 – Implementazione della modalità offline

Assicurati che l'app possa funzionare senza una connessione internet per le funzionalità principali.

9.1. Memorizza i dati localmente

Utilizza un database locale come sqflite o hive per memorizzare traduzioni e informazioni culturali.

Aggiungi la dipendenza hive in pubspec.yaml:

YAML


Inizializza Hive in main.dart:

Dart


9.2. Modifica i metodi di recupero dei dati per utilizzare la cache

Aggiorna il metodo getTranslation:

Dart


Ripeti passaggi simili per getCulturalInfo.

Passo 10 – Test e Distribuzione

Testa l'app in modo approfondito e preparala per la distribuzione.

10.1. Test su Dispositivi Fisici

Poiché le funzionalità AR richiedono l'accesso alla fotocamera, testa l'app su dispositivi reali.

10.2. Ottimizza le Prestazioni

  • Utilizza strutture dati efficienti.
  • Minimizza i re-render non necessari nell'interfaccia utente.
  • Ottimizza le immagini e i media.

10.3. Preparati per la Distribuzione

  • Aggiorna le icone dell'app e le schermate di avvio.
  • Configura i permessi dell'app.
  • Crea versioni di rilascio per Android e iOS.

Fai riferimento alla documentazione ufficiale di Flutter su creazione e rilascio per ulteriori dettagli.

Conclusione

Congratulazioni! Hai costruito un'app di Immersione Linguistica AR utilizzando Flutter e Back4App. L'app riconosce oggetti, visualizza traduzioni e informazioni culturali, tiene traccia dei progressi dell'utente e funziona offline. Puoi migliorare ulteriormente l'app integrando il riconoscimento reale degli oggetti AR, aggiungendo più lingue e migliorando l'interfaccia utente/l'esperienza utente.

Per ulteriori informazioni sulle funzionalità avanzate, considera di esplorare:

  • Integrazione di Modelli di Apprendimento Automatico: Usa TensorFlow Lite per il riconoscimento degli oggetti sul dispositivo.
  • Miglioramento delle Capacità AR: Utilizza plugin come arcore_flutter_plugin o arkit_plugin per esperienze AR più ricche.
  • Implementazione del Text-to-Speech: Aggiungi sintesi vocale per le guide di pronuncia utilizzando pacchetti come flutter_tts.
  • Miglioramento dell'Autenticazione Utente: Implementa accessi social o autenticazione a due fattori.

Costruendo questa app, hai acquisito esperienza nello sviluppo di Flutter, integrazione del backend con Back4App e funzionalità essenziali come la memorizzazione nella cache dei dati offline e il tracciamento dei progressi degli utenti. Continua a esplorare e migliorare la tua app per creare un'esperienza di apprendimento linguistico ancora più coinvolgente.