Comment créer une application d'immersion linguistique en réalité augmentée avec Flutter et Back4App
Dans ce tutoriel, vous allez créer une application d'immersion linguistique en réalité augmentée (AR) en utilisant Flutter et Back4App. L'application utilise la technologie AR pour reconnaître des objets via la caméra de l'appareil, superposer des traductions, fournir des informations culturelles et suivre les progrès de l'utilisateur. À la fin de ce tutoriel, vous disposerez d'une application fonctionnelle qui aide les utilisateurs à apprendre de nouvelles langues dans des contextes réels.
Pour compléter ce tutoriel, vous aurez besoin de :
- Flutter installé sur votre machine locale. Si vous ne l'avez pas encore configuré, suivez le guide d'installation de Flutter.
- Une application Back4App. Créez une nouvelle application en suivant le guide de démarrage avec Back4App.
- Connaissances de base en Dart et Flutter. Familiarisez-vous avec la documentation de Flutter si nécessaire.
- Compréhension de base des API RESTful et de la programmation asynchrone en Dart.
Tout d'abord, configurez un nouveau projet Flutter où vous développerez l'application d'immersion linguistique AR.
Ouvrez votre terminal et exécutez la commande suivante :
Cette commande crée un nouveau projet Flutter nommé ar_language_immersion_app.
Naviguez vers le répertoire du projet et ouvrez-le dans votre IDE préféré (par exemple, Visual Studio Code, Android Studio) :
Configurez votre backend sur Back4App pour gérer les données utilisateur, les traductions, les informations culturelles et le suivi des progrès des utilisateurs.
- Connectez-vous à votre compte Back4App.
- Cliquez sur "Créer une nouvelle application".
- Entrez "Application d'immersion linguistique AR" comme nom de l'application.
- Cliquez sur "Créer".
Définissez les classes selon le modèle de données :
- Utilisateur
- ObjetReconnaissable
- Traduction
- InfoCulturelle
- ProgressionUtilisateur
2.2.1. Créer la classe Utilisateur
La classe Utilisateur est une classe par défaut dans Back4App pour gérer l'authentification des utilisateurs.
- Accédez à Core > Navigateur dans votre tableau de bord Back4App.
- Vous verrez la classe _User déjà disponible.
2.2.2. Créer la classe RecognizableObject
- Cliquez sur "Créer une classe".
- Choisissez "Personnalisé" et nommez-le "RecognizableObject".
- Cliquez sur "Créer une classe".
Ajoutez les colonnes suivantes :
- Nom (Chaîne)
- Catégorie (Chaîne)
- ImageReference (Fichier)
2.2.3. Créer la classe Translation
- Créez une autre classe nommée "Translation".
- Ajoutez les colonnes suivantes :
- objectId (Chaîne) [Par défaut]
- ObjectID (Pointeur vers RecognizableObject)
- LanguageCode (Chaîne)
- TranslatedText (Chaîne)
- PronunciationGuide (Chaîne)
- AudioFileReference (Fichier)
2.2.4. Créer la classe CulturalInfo
- Créer une classe nommée "CulturalInfo".
- Ajouter les colonnes suivantes :
- ObjectID (Pointeur vers RecognizableObject)
- LanguageCode (Chaîne)
- ShortDescription (Chaîne)
- DetailedInformation (Chaîne)
- RelatedMediaReferences (Tableau de fichiers)
2.2.5. Créer la classe UserProgress
- Créer une classe nommée "UserProgress".
- Ajouter les colonnes suivantes :
- IdentifiantUtilisateur (Pointeur vers l'utilisateur)
- ObjetsReconnaissables (Tableau d'IDs d'ObjetReconnaissable)
- TraductionsVues (Tableau d'IDs de Traduction)
- InfosCulturellesAccédées (Tableau d'IDs d'InfoCulturelle)
- SériesD'apprentissage (Nombre)
- ScoresDeCompétence (Dictionnaire)
- Allez à Paramètres de l'Application > Sécurité & Clés.
- Notez votre Identifiant d'Application et Clé Client; vous en aurez besoin pour initialiser Parse dans votre application Flutter.
Intégrez le SDK Parse fourni par Back4App dans votre projet Flutter pour communiquer avec le backend.
Ouvrez pubspec.yaml et ajoutez les dépendances suivantes :
Exécutez la commande :
Remarque : Comme il n'existe pas de plugin AR officiel appelé augmented_reality_plugin, vous devrez peut-être utiliser des plugins comme arcore_flutter_plugin pour Android et arkit_plugin pour iOS. Ajustez en fonction de vos plateformes cibles.
Dans lib/main.dart, initialisez Parse lors du démarrage de l'application :
Remplacez 'YOUR_APPLICATION_ID' et 'YOUR_CLIENT_KEY' par les clés que vous avez obtenues de Back4App.
Implémentez les fonctionnalités d'enregistrement et de connexion des utilisateurs.
Créez un nouveau fichier lib/screens/auth_screen.dart.
Dans lib/main.dart, mettez à jour votre MaterialApp pour inclure des routes :
Configurez la fonctionnalité AR pour reconnaître des objets en utilisant la caméra de l'appareil.
Pour Android et iOS, vous devez demander des autorisations pour la caméra.
Android
Dans android/app/src/main/AndroidManifest.xml, ajoutez :
iOS
Dans ios/Runner/Info.plist, ajoutez :
Créez un nouveau fichier lib/screens/ar_view_screen.dart.
Remarque: La mise en œuvre de la reconnaissance complète d'objets AR est complexe et peut nécessiter l'intégration avec des modèles d'apprentissage automatique comme TensorFlow Lite ou l'utilisation de plateformes comme le ML Kit de Google. Pour ce tutoriel, nous allons simuler la reconnaissance d'objets.
À des fins de démonstration, nous allons simuler la reconnaissance d'objets en affichant des objets prédéfinis.
Mettre à jour ar_view_screen.dart:
Récupérer les traductions de Back4App et les afficher sous forme de superpositions.
Dans ar_view_screen.dart, ajoutez une méthode pour récupérer les traductions :
Modifiez la build méthode :
Récupérez et affichez des informations culturelles liées à l'objet reconnu.
Ajoutez une méthode dans ar_view_screen.dart:
Modifiez la build méthode:
Mettez à jour les progrès de l'utilisateur chaque fois qu'il consulte une traduction ou des informations culturelles.
Ajoutez une méthode pour mettre à jour la progression :
Dans setState où selectedObject est mis à jour :
Assurez-vous que l'application peut fonctionner sans connexion Internet pour les fonctionnalités essentielles.
Utilisez une base de données locale comme sqflite ou hive pour stocker les traductions et les informations culturelles.
Ajoutez la dépendance hive dans pubspec.yaml:
Initialisez Hive dans main.dart:
Mettez à jour la méthode getTranslation :
Répétez des étapes similaires pour getCulturalInfo.
Testez l'application en profondeur et préparez-la pour le déploiement.
Puisque les fonctionnalités AR nécessitent un accès à la caméra, testez l'application sur de vrais appareils.
- Utilisez des structures de données efficaces.
- Minimisez les re-rendus inutiles dans l'interface utilisateur.
- Optimisez les images et les médias.
- Mettre à jour les icônes d'application et les écrans de démarrage.
- Configurer les autorisations de l'application.
- Construire des versions de publication pour Android et iOS.
Consultez la documentation officielle de Flutter sur la construction et la publication pour plus de détails.
Félicitations ! Vous avez construit une application d'immersion linguistique en AR en utilisant Flutter et Back4App. L'application reconnaît les objets, affiche des traductions et des informations culturelles, suit les progrès de l'utilisateur et fonctionne hors ligne. Vous pouvez améliorer davantage l'application en intégrant une reconnaissance d'objets AR réelle, en ajoutant plus de langues et en améliorant l'UI/UX.
Pour plus d'informations sur les fonctionnalités avancées, envisagez d'explorer :
- Intégration de modèles d'apprentissage automatique: Utilisez TensorFlow Lite pour la reconnaissance d'objets sur l'appareil.
- Amélioration des capacités AR: Utilisez des plugins comme arcore_flutter_plugin ou arkit_plugin pour des expériences AR plus riches.
- Mise en œuvre de la synthèse vocale: Ajoutez une synthèse vocale pour les guides de prononciation en utilisant des packages comme flutter_tts.
- Amélioration de l'authentification utilisateur: Implémentez des connexions sociales ou une authentification à deux facteurs.
En construisant cette application, vous avez acquis de l'expérience dans le développement Flutter, l'intégration backend avec Back4App, et des fonctionnalités essentielles comme la mise en cache des données hors ligne et le suivi des progrès de l'utilisateur. Continuez à explorer et à améliorer votre application pour créer une expérience d'apprentissage des langues encore plus engageante.