Formation Flutter Master 2022 – Devenez un expert Flutter
Introduction
Bienvenue
Qu’est-ce que le Dart ?
Les prérequis
Télécharger la bonne version de Flutter
Installation des logiciels requis
Installation sur Windows
Installation sur macOS
Installation sur macOS [ANCIENNE VERSION]
L’application Ma carte de visite
Challenge : niveau 1
L’application TheQuizz V1
Présentation de l’application avec DrawIO – Flutter 1.22
Création du projet
Organisation du projet : le système MVC
Création du StatefulWidget
Le principe du modèle
Le constructeur de classe
Le widget SafeArea
Création de la structure du screen
Le widget buildQuestion
Vrai ou Faux
Le score
Les listes
La création du contrôleur
Fonctionnement du modèle avec le contrôleur
La fonction getAnswer
La fonction getQuestionText
La propriété length
La fonction shuffle
Connexion du contrôleur au screen
Connexion du widget buildQuestion
Les conditions If Else
L’incrémentation
La fonction initState
Activation du rendu dynamique
Le site Pub.dev
Installation du package RFlutter Alert
Création de la boîte de dialogue
La fonction pop du Navigator
Le mot clé static
Le widget dynamique
Les premières connexions
Quelques corrections
Déclaration des paramètres
Factorisation des DialogButtons
Dernier correctif
L’application TheQuizz V1.1
La migration des packages – Flutter 3.3.8
Local ou privé
TextButton
Appliquer les recommandations
Bug d’affichage
Challenge : niveau 2
L’application ICanDOIT V1
Présentation avec DrawIO – Flutter 1.22
Création du projet
Création du modèle
La structure du modèle
Le JSON
Map et JSON
Le deuxième constructeur
Finalisation du modèle
Le Floating Action Button
Le principe de clé
Le Bottom Sheet
Media Query
Le widget Form
Une liste déroulante dans un formulaire
L’affichage dynamique
Le Persistent Controller
Changer de clavier
Le paramètre validator
L’appel des validations
La condition Else if
Les expressions régulières
Le constructeur de ListView
La liste des challenges
Le widget Dismissible
Personnalisation des challenges
Personnalisation du Dismissible
Dismiss Direction
Le widget AlertDialog
Asynchrone
Async/Await
Async dans notre projet
Première méthode du contrôleur
La fonction addChallenge
L’expression ternaire
Le doublon name
Le package SharedPreferences
L’itération avec la fonction map
L’encodage en JSON
L’utilité de print
Le paramètre onSaved
L’application ICanDOIT V1.1
Null Safety oblige – Flutter 3.3.8
Conflit entre Null Safety et valeur par défaut
Appliquer toutes les recommandations
Correction de bugs
L’application The Chat V1
Introduction avec DrawIO – Flutter 1.22
L’organisation
Les routes
La Map
La Stack
Création du screen d’accueil
Correctif et ajout des boutons
Personnalisation des boutons
Le widget Flexible
Le screen Se connecter
Les fonctions du Navigator
Factorisation et nettoyage du code
Connexion de l’AppBar
Le ComponentButton
Personnaliser les champs du formulaire
Factorisation du TextFormField
Le screen S’inscrire
Finalisation du screen et optimisation
L’animation avec le widget Hero
Introduction à Firebase
Configuration sur Android
Migration vers AndroidX
Configuration sur iOS
Ajout de Firebase dans notre projet
L’alternative à Async/Await
Création d’un utilisateur sur Android
Correction de bug sur iOS
Récupération des données du formulaire
Vérification des champs du formulaire
Le TextEditingController
Personnalisation des erreurs
La sauvegarde de l’historique
Se connecter avec Firebase
Intégration de l’authentification et de la redirection
La déconnexion
Correction de bug
Le fonctionnement de Firebase
La fonction checkIdentity
Intégration de la fonction checkIdentity dans nos screens
Suppression des screens dans la pile
L’application The Chat V1.1
Introduction – Flutter 3.3.8
Nouvelle version Firebase
Du changement côté Firebase
Les recommandations classiques
Deux cas particulier
Finir la liste des problèmes
Ajouter un nouveau paramètre dans Gradle
Deux erreurs
Quelques ajustements
Mise à jour du gestionnaire d’erreurs
Challenge : niveau 3
L’application NearMe V1
Présentation avec DrawIO – Flutter 1.22
Création du projet
Le package GoogleFonts
Le BottomNavigationBar
Le widget CurvedNavigationBar
L’affichage des pages
Le contrôleur de nos pages
Installation du package Google Maps
L’API
Places API
Configuration iOS et Android
Google Maps en fonctionnement
Les requêtes Http
Création du contrôleur
Le résultat de la requête
Création du modèle
La boucle for
Les alternatives recommandées
Test et correctifs
Par défaut
Uri et Url
Les constantes globales
Les paramètres de notre requête
Le package geolocator
Intégration du geolocator
Changement de channel
Simuler la localisation
Concatener, arrondir, tronquer
La collection Set
Le MarkerID
Générer la collection
Réglage de la caméra
Correction de bug
Évolution de notre contrôleur
Remplacement du check des marqueurs
La partie configuration de notre application
Finir les DropdownButton
Personnalisation de notre config content
Challenge niveau 4
Ajout du provider
L’application Flutter™ IN’French V1
Présentation – Flutter 1.22
Création du projet
L’AppBar
Utilisation du widget ThemeData
Le widget Drawer
On ajoute un listView
Les liens du menu
Le logo Flutter
Mise en cache
Personnalisation
La structure de nos articles
Challenge Cloud Firestore
Cloud Firestore sur Android
Cloud Firestore sur iOS
Intégration du provider
Le premier article
La méthode principale
Le modèle
Intégration du modèle
Comprendre les retours
Notre système de vérification
Test et finalisation
Intégration du contrôleur
Débogage et tests
Le ListView
Correction de bug
Personnalisation
La structure du contact screen
Factorisation
Lancer des url
Extraction et interraction
Fonctionnalité avancée
Structure de l’ArticleScreen
La route dynamique
Le widget FittedBox
Calcul de la hauteur
La fonction de rafraichissement
Les limitations de l’application
Intégration du package
Génération du Html
L’application Circle Action V1
Introduction – Flutter 1.22
Challenge
Gérer l’interface
Le concept d’animation et Flutter
Le Ticker Provider
Le widget AnimationController
Le widget Animation
Mise en pratique
Les assets
La rotation
Widget Stack et interaction
Le contrôleur en action
L’interpolation
Pseudo-aléatoire
Définir la couleur
Décodage
L’algorithme final
Utilisation de l’algo
Relancer le jeu
Correction de bug
Ajout du texte
Challenge : le modèle
Création du modèle
La liste d’action
La fonction getAction
Écouter l’animation
L’ordre d’exécution
Intégration du callback
Personnalisation du SimpleDialog
Memory Leak
L’application BuyIT V1