1.3Première application
1.3.1 – Installation & outils (Windows + Android Studio)
Maintenant que vous connaissez Flutter et ses atouts, il est temps de passer à la pratique. Dans cette section, nous allons voir comment installer Flutter sur Windows et configurer Android Studio pour développer vos applications Android avec Flutter.
💻 Prérequis système pour Windows
Avant de commencer, assurez-vous que votre ordinateur Windows répond aux exigences minimales.
Configuration requise
- Système d'exploitation : Windows 10 version 1803 ou supérieure (64 bits)
- Processeur : Intel Core i5 ou équivalent (i7/i9 recommandé)
- RAM : Minimum 8 Go (16 Go recommandés)
- Espace disque : Au moins 10 Go d'espace libre
- Flutter SDK : ~2,5 Go
- Android Studio : ~3 Go
- Android SDK et outils : ~4 Go
- Espace de travail : ~500 Mo minimum
- Outils requis : PowerShell 5.0 ou plus récent, Git pour Windows
- Virtualisation : Intel VT-x ou AMD-V activée dans le BIOS (pour l'émulateur Android)
📥 Étape 1 : Installation de Git pour Windows
Flutter nécessite Git pour fonctionner. Si vous ne l'avez pas déjà installé, commencez par là.
- Téléchargez Git depuis git-scm.com/download/win
- Exécutez l'installateur
- Gardez les options par défaut (recommandé)
- Terminez l'installation
Vérifiez que Git est installé en ouvrant PowerShell et en tapant :
# Vérifier la version de Git
git --version
📥 Étape 2 : Installation du SDK Flutter
Maintenant, installons Flutter sur votre ordinateur Windows.
- Télécharger Flutter
- Rendez-vous sur flutter.dev/docs/get-started/install/windows
- Cliquez sur "Get Started"
- Choisissez "Windows"
- Téléchargez le fichier ZIP du SDK Flutter (environ 1,5 Go)
- Extraire le fichier
- Créez un dossier pour Flutter, par exemple :
C:\dev\flutter - Extrayez le contenu du fichier ZIP dans ce dossier
- Important : N'installez pas dans
C:\Program Files\(peut causer des problèmes de permissions)
- Créez un dossier pour Flutter, par exemple :
- Ajouter Flutter au PATH
- Ouvrez le menu Démarrer et recherchez "Variables d'environnement"
- Cliquez sur "Modifier les variables d'environnement système"
- Cliquez sur "Variables d'environnement"
- Dans "Variables utilisateur", sélectionnez "Path" et cliquez sur "Modifier"
- Cliquez sur "Nouveau" et ajoutez :
C:\dev\flutter\bin - Cliquez sur "OK" pour tout fermer
✅ Étape 3 : Vérification de l'installation Flutter
Ouvrez PowerShell et vérifiez que Flutter est correctement installé :
# Vérifier que Flutter est installé
flutter --version
# Diagnostic complet de votre installation
flutter doctor
La commande flutter doctor va analyser votre système et afficher un rapport. Pour l'instant, il est normal d'avoir des croix rouges [✗] pour Android Studio et les outils Android. Nous allons les installer dans les étapes suivantes.
C:\dev\flutter\bin au PATH et redémarrez PowerShell.
Une fenêtre de terminal montrant la sortie de la commande
flutter doctor avec :• Des coches vertes [✓] pour les éléments correctement installés
• Des croix rouges [✗] pour les éléments manquants
• Des points d'exclamation [!] pour les avertissements
• Des instructions détaillées pour corriger chaque problème
🛠️ Étape 4 : Installation d'Android Studio
Android Studio est l'IDE officiel pour le développement Android. C'est l'environnement de développement recommandé pour Flutter et le développement Android moderne. Elle inclut tous les outils nécessaires : éditeur de code, émulateurs Android, débogueur, et bien plus.
Téléchargement et installation
- Télécharger Android Studio
- Rendez-vous sur
developer.android.com/studio - Téléchargez la version Windows (environ 1,1 Go)
- Vérifiez que vous téléchargez bien la dernière version stable d'Android Studio
- Rendez-vous sur
- Lancer l'installateur
- Double-cliquez sur le fichier téléchargé
- Suivez l'assistant d'installation
- Gardez les options par défaut (recommandé)
- L'installation prend environ 5-10 minutes
- Premier démarrage d'Android Studio
- Lancez Android Studio après l'installation
- L'assistant de configuration se lance automatiquement
- Choisissez "Standard" pour l'installation
- Sélectionnez votre thème (clair ou sombre)
- Android Studio va télécharger le SDK Android et les outils nécessaires (environ 3 Go)
- Cette étape peut prendre 10-30 minutes selon votre connexion
Fonctionnalités d'Android Studio
Android Studio offre plusieurs fonctionnalités importantes :
- Performance améliorée : Démarrage plus rapide, indexation plus efficace
- Nouvel éditeur : Meilleure autocomplétion et suggestions
- Device Manager modernisé : Interface simplifiée pour gérer les émulateurs
- Support Kotlin 2.0 : Dernières fonctionnalités du langage
- Intégration IA : Suggestions de code intelligentes (Gemini Code Assist)
- Émulateurs optimisés : Meilleure performance, moins de RAM utilisée
⚙️ Étape 5 : Configuration des plugins Flutter et Dart
Maintenant qu'Android Studio est installé, ajoutons le support pour Flutter.
- Ouvrir le gestionnaire de plugins
- Dans Android Studio, cliquez sur File → Settings (ou
Ctrl+Alt+S) - Dans le menu de gauche, cliquez sur Plugins
- Dans Android Studio, cliquez sur File → Settings (ou
- Rechercher et installer Flutter
- Dans l'onglet "Marketplace", recherchez
Flutter - Cliquez sur le plugin "Flutter" (par flutter.dev)
- Cliquez sur "Install"
- Le plugin Dart sera automatiquement installé en même temps
- Dans l'onglet "Marketplace", recherchez
- Redémarrer Android Studio
- Cliquez sur "Restart IDE" quand demandé
- Android Studio va redémarrer avec le support Flutter activé
C:\dev\flutter (ou l'emplacement où vous avez extrait Flutter à l'étape 2).
📱 Étape 6 : Créer un émulateur Android
Pour tester vos applications Flutter sans appareil physique, vous devez créer un émulateur Android (AVD - Android Virtual Device).
- Ouvrir le Device Manager
- Dans Android Studio, l'icône du Device Manager est dans la barre d'outils en haut
- Ou via le menu : Tools → Device Manager
- Créer un nouvel appareil virtuel
- Cliquez sur le bouton "+" ou "Create Device"
- Choisissez un modèle d'appareil (recommandé : Pixel 6 ou Pixel 7)
- Cliquez sur "Next"
- Sélectionner une image système
- Choisissez API Level 34 (Android 14) ou API Level 33 (Android 13)
- Prenez la version x86_64 (plus rapide sur PC Windows)
- Si l'image n'est pas déjà téléchargée, cliquez sur "Download" à côté
- Attendez le téléchargement (environ 1 Go)
- Cliquez sur "Next"
- Configurer l'AVD
- Donnez un nom à votre émulateur (ex: "Flutter Pixel 6")
- Configuration recommandée :
- RAM : 2048 Mo (2 Go)
- Heap : 512 Mo
- Stockage : 2 Go minimum
- Cliquez sur "Finish"
✅ Étape 7 : Vérification complète avec flutter doctor
Une fois tout installé, vérifiez que votre environnement est prêt.
# Vérifier Flutter
flutter --version
# Diagnostic complet
flutter doctor -v
# Lister les appareils disponibles (émulateurs et physiques)
flutter devices
# Créer un projet de test
flutter create mon_premier_projet
cd mon_premier_projet
# Lancer l'application
flutter run
Si flutter doctor affiche toutes les coches vertes (ou au moins celles pour votre plateforme cible), félicitations ! Votre environnement est prêt.
1.3.2 – Créer un projet avec Android Studio
Vous avez installé Flutter et Android Studio, et appris les bases de Dart. Il est maintenant temps de créer votre première application Flutter ! Dans cette section, nous allons créer un projet Flutter pas à pas avec Android Studio et découvrir la structure d'un projet Flutter.
🚀 Étape 1 : Ouvrir Android Studio
Lancez Android Studio. Vous arrivez sur l'écran de bienvenue.
📝 Étape 2 : Créer un nouveau projet Flutter
- Cliquez sur le bouton "New Project"
- Dans la fenêtre qui s'ouvre, sélectionnez "Flutter" dans la colonne de gauche
Dans la colonne de gauche, vous voyez :
• Empty Views Activity
• Phone and Tablet
• Flutter ← SÉLECTIONNER CELUI-CI
• Wear OS
• TV
• Automotive
Dans la partie centrale, après avoir sélectionné Flutter :
• Icône Flutter (logo bleu/blanc)
• Description : "Create a new Flutter project"
• Bouton "Next" en bas à droite
- Cliquez sur "Next"
⚙️ Étape 3 : Configurer le projet
Vous arrivez sur la fenêtre de configuration du projet. Remplissez les champs suivants :
Champs à remplir :
- Project name : Le nom de votre projet (ex:
ma_premiere_app) - Project location : L'emplacement où sauvegarder le projet (ex:
C:\Users\VotreNom\FlutterProjects) - Description : Une brève description (ex: "Ma première application Flutter")
- Project type : Laissez "Application" sélectionné
- Organization : Identifiant de votre organisation en notation inversée (ex:
com.monnom) - Android language : Kotlin (recommandé)
- Platforms : Cochez les plateformes cibles (Android, iOS, Web, Windows, etc.)
Exemple de configuration :
• Project name:
ma_premiere_app• Project location:
C:\Users\dell\FlutterProjects\ma_premiere_app• Description: Ma première application Flutter
• Project type: Application
• Organization:
com.exemple• Android language: Kotlin
• iOS language: Swift
• Platforms: ☑ Android ☑ iOS ☑ Web ☑ Windows
En bas : bouton "Create" (bleu)
• Tout en minuscules
• Utilisez des underscores (
_) pour séparer les mots• Pas d'espaces, pas de tirets, pas de caractères spéciaux
• Exemples valides :
mon_app, gestion_taches, calculatrice_simple• Exemples invalides :
MonApp, mon-app, mon app
L'organization en notation inversée (ex:
com.monnom) est utilisée pour créer l'identifiant unique de votre application :• Android :
com.monnom.ma_premiere_app• iOS :
com.monnom.maPremiereAppSi vous publiez votre app, utilisez votre nom de domaine inversé. Sinon,
com.exemple ou com.votreprenom suffisent pour apprendre.
- Une fois tous les champs remplis, cliquez sur "Create"
⏳ Étape 4 : Attendre la création du projet
Android Studio va maintenant créer votre projet Flutter. Cette opération prend quelques instants. Vous verrez :
- Une barre de progression en bas de la fenêtre
- Des messages comme "Creating Flutter project...", "Running pub get...", "Indexing..."
- L'éditeur s'ouvre progressivement avec le fichier
main.dart
🎉 Étape 5 : Découvrir l'interface d'Android Studio
Une fois le projet créé, Android Studio affiche l'interface de développement. Voici les zones importantes :
À gauche : Project Explorer
• Vue arborescente des dossiers et fichiers
• Dossiers principaux : android/, ios/, lib/, test/, web/
• Le dossier
lib/ contient main.dart (votre code)Au centre : Éditeur de code
• Le fichier
main.dart est ouvert par défaut• Code de l'application de démonstration (compteur)
• Numéros de lignes à gauche
• Coloration syntaxique
En haut : Barre d'outils
• Sélecteur d'appareil (émulateur/appareil physique)
• Bouton ▶️ Run (vert) pour lancer l'app
• Bouton 🔨 Build
• Bouton 🐞 Debug
En bas : Panneaux d'outils
• Terminal intégré
• Messages de build
• Logs de l'application
• Flutter Inspector
À droite : Notifications et raccourcis Flutter
📂 Comprendre la structure du projet
Dans le Project Explorer (panneau de gauche), vous voyez la structure de votre projet Flutter. Voici les dossiers et fichiers les plus importants :
Structure du projet ma_premiere_app :
📁 ma_premiere_app
├── 📁 .dart_tool/ (Fichiers internes Dart)
├── 📁 .idea/ (Configuration Android Studio)
├── 📁 android/ ← Configuration Android native
├── 📁 ios/ ← Configuration iOS native
├── 📁 lib/ 🎯 VOTRE CODE ICI !
│ └── 📄 main.dart ← Point d'entrée de l'app
├── 📁 test/ (Tests unitaires et widgets)
├── 📁 web/ (Configuration Web)
├── 📁 windows/ (Configuration Windows)
├── 📄 .gitignore (Fichiers à ignorer par Git)
├── 📄 .metadata (Métadonnées Flutter)
├── 📄 analysis_options.yaml (Configuration du linter)
├── 📄 pubspec.lock (Versions verrouillées)
├── 📄 pubspec.yaml 🔧 CONFIGURATION DU PROJET
└── 📄 README.md (Documentation)
🎯 Les dossiers clés à connaître
📁 lib/ - Votre code Dart
C'est ici que vous passerez 95% de votre temps ! Le dossier lib/ contient tout votre code Dart et Flutter.
Par défaut, il contient :
main.dart: Le point d'entrée de votre application
Pour un projet plus grand, organisez-le ainsi :
lib/
├── main.dart # Point d'entrée
├── models/ # Classes de données
│ ├── utilisateur.dart
│ └── produit.dart
├── screens/ # Écrans de l'application
│ ├── home_screen.dart
│ ├── login_screen.dart
│ └── profile_screen.dart
├── widgets/ # Widgets réutilisables
│ ├── custom_button.dart
│ └── user_card.dart
└── services/ # Services (API, DB)
└── api_service.dart
1. Clic droit sur le dossier
lib/2. New → Directory
3. Tapez le nom (ex:
screens)4. Appuyez sur Entrée
Pour créer un fichier Dart :
1. Clic droit sur le dossier
2. New → Dart File
3. Tapez le nom (ex:
home_screen)4. Appuyez sur Entrée
📄 pubspec.yaml - Configuration du projet
C'est le fichier de configuration principal de votre projet. Double-cliquez dessus dans le Project Explorer pour l'ouvrir.
Il contient :
- Métadonnées : nom, version, description
- Dépendances : packages externes à installer
- Assets : images, polices, fichiers
name: ma_premiere_app
description: "Ma première application Flutter"
version: 1.0.0+1
environment:
sdk: '>=3.2.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
uses-material-design: true
Méthode 1 : Avec l'interface
1. Ouvrez
pubspec.yaml2. Ajoutez le package sous
dependencies:3. Cliquez sur "Pub get" en haut de l'éditeur
Méthode 2 : Avec le terminal intégré
1. Ouvrez le terminal en bas (Alt+F12)
2. Tapez :
flutter pub add nom_du_package3. Le package est automatiquement ajouté et téléchargé
📁 android/ et ios/ - Configurations natives
Ces dossiers contiennent les projets Android et iOS natifs. Flutter les gère automatiquement, mais vous devrez parfois les modifier pour :
- Android : Ajouter des permissions dans
AndroidManifest.xml - iOS : Configurer les permissions dans
Info.plist - Changer l'icône de l'application
- Modifier le nom de l'application
lib/ pour apprendre Flutter. Vous les explorerez plus tard pour les configurations avancées.
📁 test/ - Tests de l'application
Contient les tests unitaires et widgets. Flutter encourage fortement les tests pour assurer la qualité de votre code.
👀 Explorer le fichier main.dart
Dans l'éditeur central, Android Studio a ouvert automatiquement le fichier lib/main.dart. C'est le point d'entrée de votre application.
Voici à quoi ressemble le code par défaut :
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
Ne vous inquiétez pas si ce code vous semble complexe ! Nous allons le découvrir en détail dans la prochaine section.
▶️ Étape 6 : Lancer votre première application
Maintenant, lançons l'application sur un émulateur ou un appareil physique.
1. Sélectionner un appareil
En haut de la fenêtre Android Studio, vous voyez un sélecteur d'appareil. Cliquez dessus pour voir les options disponibles.
Vous voyez :
• 📱 Votre émulateur Android (ex: "Pixel 6 API 34")
• 📱 Appareils physiques connectés (s'il y en a)
• 🌐 Chrome (pour version Web)
• 💻 Windows (pour version Desktop)
• ➕ "Device Manager" pour créer un nouvel émulateur
Si vous n'avez aucun appareil :
- Cliquez sur "Device Manager" dans le sélecteur
- Cliquez sur "+ Create Device"
- Choisissez un modèle (ex: Pixel 6)
- Sélectionnez une image système (ex: API 34)
- Cliquez sur "Finish"
- Lancez l'émulateur avec le bouton ▶️
2. Lancer l'application
Une fois un appareil sélectionné, cliquez sur le grand bouton vert ▶️ Run en haut à droite.
3. Attendre la compilation
La première compilation prend du temps (1 à 3 minutes). Vous verrez dans le panneau inférieur :
- "Running Gradle task 'assembleDebug'..." (Android)
- "Building..." avec une barre de progression
- Logs de compilation
4. Découvrir l'application de démonstration
Une fois la compilation terminée, l'application se lance automatiquement sur l'émulateur ou l'appareil. Vous voyez :
- Une barre d'application (AppBar) en haut avec le titre "Flutter Demo Home Page"
- Un texte central : "You have pushed the button this many times:"
- Un compteur qui affiche 0
- Un bouton flottant (rond, violet) en bas à droite avec un "+"
Cliquez sur le bouton + : le compteur augmente ! C'est l'application de démonstration classique de Flutter.
En haut : Barre violette avec "Flutter Demo Home Page"
Au centre :
• Texte : "You have pushed the button this many times:"
• Grand nombre : "0" (augmente à chaque clic)
En bas à droite : Bouton rond violet avec icône "+"
⚡ Découvrir le Hot Reload
Le Hot Reload est la fonctionnalité magique de Flutter. Testons-la !
- Dans
main.dart, cherchez la ligne avec le texte "You have pushed the button this many times" - Modifiez-le en : "Nombre de clics :"
- Sauvegardez le fichier (Ctrl+S ou Cmd+S)
- Regardez l'émulateur : le texte change instantanément sans relancer l'app !
📱 Tester sur un téléphone Android physique
Pour de meilleures performances et tester en conditions réelles, connectez un véritable téléphone Android.
Étapes pour activer le débogage USB
- Activer le Mode Développeur
- Sur votre téléphone Android, allez dans Paramètres → À propos du téléphone
- Appuyez 7 fois rapidement sur "Numéro de build" ou "Version du logiciel"
- Un message "Vous êtes maintenant développeur !" s'affiche
- Activer le Débogage USB
- Retournez aux Paramètres principaux
- Allez dans Options pour les développeurs
- Activez "Débogage USB"
- Connecter le téléphone
- Connectez votre téléphone à l'ordinateur avec un câble USB
- Sur le téléphone, autorisez le débogage USB (popup qui apparaît)
- Cochez "Toujours autoriser depuis cet ordinateur"
- Vérifier la détection
- Dans PowerShell, tapez :
flutter devices - Votre téléphone devrait apparaître dans la liste
- Dans Android Studio, il apparaît aussi dans la liste des appareils en haut
- Dans PowerShell, tapez :
- Lancer l'application
- Sélectionnez votre téléphone dans la liste des appareils
- Cliquez sur Run (▶️)
- L'app s'installe et se lance sur votre téléphone !
🛠️ Outils Android Studio pour Flutter
Flutter Inspector
En bas à droite, vous avez accès au Flutter Inspector, un outil puissant pour :
- Visualiser l'arborescence des widgets
- Inspecter les propriétés de chaque widget
- Déboguer la mise en page (layout)
- Activer les repères visuels (grid overlay)
Flutter Outline
À droite de l'éditeur, l'onglet "Flutter Outline" affiche la structure des widgets de votre fichier. C'est très utile pour naviguer dans du code complexe.
Terminal intégré
En bas, l'onglet "Terminal" vous permet d'exécuter des commandes Flutter directement :
# Voir les appareils disponibles
flutter devices
# Installer un package
flutter pub add http
# Analyser le code
flutter analyze
# Nettoyer le projet
flutter clean
❓ Problèmes courants sous Windows
1. Flutter n'est pas reconnu comme commande
Problème : Quand vous tapez flutter dans PowerShell, vous voyez l'erreur "Le terme 'flutter' n'est pas reconnu..."
Solution :
- Vérifiez que vous avez bien ajouté
C:\dev\flutter\binau PATH - Fermez et rouvrez PowerShell (important !)
- Si le problème persiste, redémarrez Windows
2. Android licenses not accepted
Problème : flutter doctor affiche [✗] Android licenses not accepted
Solution :
# Dans PowerShell, exécutez :
flutter doctor --android-licenses
# Tapez 'y' pour accepter chaque licence
# (il y en a environ 6-8)
3. L'émulateur ne démarre pas ou est très lent
Problème : L'émulateur Android ne démarre pas ou est extrêmement lent.
Solutions :
- Vérifier la virtualisation : Entrez dans le BIOS et activez Intel VT-x ou AMD-V
- Désactiver Hyper-V (Windows 11) : Ouvrez PowerShell en admin et exécutez :
bcdedit /set hypervisorlaunchtype off - Allouer plus de RAM : Dans Device Manager, éditez l'AVD et augmentez la RAM à 2048 Mo
- Utiliser x86_64 : Assurez-vous d'avoir téléchargé l'image système x86_64 (pas ARM)
4. Gradle build failed
Problème : La compilation échoue avec des erreurs Gradle.
Solutions :
- Vérifiez votre connexion internet (Gradle télécharge des dépendances)
- Nettoyez le projet :
flutter cleanpuis réessayez - Supprimez le cache Gradle : Supprimez le dossier
C:\Users\VotreNom\.gradle
5. Unable to find bundled Java version
Problème : Erreur concernant Java/JDK manquant.
Solution : Android Studio inclut Java. Si l'erreur persiste, réinstallez Android Studio.
flutter doctor -v
Cette commande affiche tous les détails de votre configuration. Copiez-collez les messages d'erreur dans Google pour trouver des solutions spécifiques.
💡 Points clés à retenir
- lib/ : Votre code Dart (c'est là que vous travaillez)
- main.dart : Point d'entrée de l'application
- pubspec.yaml : Configuration, dépendances, assets
- Dossiers de plateforme (android/, ios/, etc.) : Configurations natives
- test/ : Tests unitaires et widgets
- Organisation : Séparer en models/, screens/, widgets/, services/
- flutter pub get : Installer les dépendances
- flutter run : Lancer l'application
- Hot Reload : Modifications instantanées sans relancer l'app
🎉 Félicitations !
Votre environnement de développement Flutter est maintenant complètement opérationnel sur Windows avec Android Studio. Vous avez :
- ✅ Installé Flutter SDK
- ✅ Configuré Android Studio
- ✅ Installé les plugins Flutter et Dart
- ✅ Créé un émulateur Android
- ✅ Lancé votre première application
- ✅ Testé le Hot Reload
Vous êtes maintenant prêt à plonger dans le développement Flutter et créer des applications Android incroyables ! 🚀
1.3.3 – runApp, MaterialApp
Maintenant que vous avez créé votre projet Flutter, il est temps de comprendre comment fonctionne le code du fichier main.dart. Dans cette section, nous allons décortiquer les deux fonctions essentielles qui démarrent toute application Flutter : runApp() et MaterialApp.
🚀 La fonction main() - Le point d'entrée
Comme dans tout programme Dart, l'exécution commence par la fonction main(). C'est le point d'entrée de votre application.
void main() {
runApp(const MyApp());
}
Cette fonction fait une seule chose : elle appelle runApp() en lui passant un widget (ici MyApp).
En Flutter, on sépare les responsabilités :
•
main() : Lance l'application•
runApp() : Initialise le framework Flutter•
MyApp : Définit l'application elle-mêmeCette séparation rend le code plus clair et organisé.
🎯 runApp() - Initialiser l'application Flutter
La fonction runApp() est fournie par Flutter. Elle prend un widget en paramètre et en fait la racine de votre application.
// Fonction fournie par Flutter
void runApp(Widget app) {
// Initialise le framework Flutter
// Configure le moteur de rendu
// Affiche le widget à l'écran
}
Que fait runApp() exactement ?
- Initialise le framework : Configure tous les systèmes internes de Flutter
- Attache le widget à l'écran : Le widget passé devient la racine de l'arbre des widgets
- Lance le premier rendu : Affiche l'interface à l'écran
- Démarre la boucle d'événements : Écoute les interactions utilisateur
runApp() avec n'importe quel widget, mais en pratique, on utilise toujours MaterialApp ou CupertinoApp comme widget racine.
📱 MaterialApp - Le widget racine
MaterialApp est un widget spécial fourni par Flutter. Il configure toute votre application pour utiliser le Material Design de Google.
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
Rôle de MaterialApp
MaterialApp configure automatiquement :
- Le thème : Couleurs, polices, styles de toute l'application
- La navigation : Système de routes et de pages
- Les localisations : Support multilingue
- Les animations : Transitions entre pages
- Les overlays : Dialogues, snackbars, etc.
🔧 Propriétés importantes de MaterialApp
1. title - Le titre de l'application
MaterialApp(
title: 'Ma Super App', // Titre de l'app (visible dans le multitâche)
// ...
)
Le title est utilisé par le système d'exploitation pour identifier votre application dans le gestionnaire de tâches.
2. home - La page d'accueil
MaterialApp(
home: const MyHomePage(title: 'Accueil'), // Premier écran affiché
// ...
)
home définit le premier écran que verra l'utilisateur au lancement de l'application.
3. theme - Le thème visuel
MaterialApp(
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true, // Utiliser Material Design 3
),
// ...
)
Le theme définit l'apparence globale de votre application : couleurs primaires, secondaires, polices, formes des boutons, etc.
ColorScheme.fromSeed(), Flutter génère automatiquement une palette de couleurs harmonieuse à partir d'une seule couleur de base. C'est pratique pour avoir un design cohérent !
4. debugShowCheckedModeBanner - Bannière de debug
MaterialApp(
debugShowCheckedModeBanner: false, // Masquer "DEBUG"
// ...
)
Par défaut, Flutter affiche une bannière "DEBUG" en haut à droite en mode développement. Cette propriété permet de la masquer.
5. routes - Navigation entre écrans
MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => HomeScreen(),
'/profile': (context) => ProfileScreen(),
'/settings': (context) => SettingsScreen(),
},
)
Les routes définissent la navigation dans votre application. Chaque route est associée à un écran.
6. darkTheme - Mode sombre
MaterialApp(
theme: ThemeData.light(), // Thème clair
darkTheme: ThemeData.dark(), // Thème sombre
themeMode: ThemeMode.system, // Suit les préférences système
)
🎨 Exemple complet avec explications
Reprenons le code de main.dart et expliquons chaque partie :
// 1. Import du package Flutter Material Design
import 'package:flutter/material.dart';
// 2. Point d'entrée de l'application
void main() {
// 3. Lancer l'application avec MyApp comme widget racine
runApp(const MyApp());
}
// 4. Widget racine de l'application (StatelessWidget car il ne change pas)
class MyApp extends StatelessWidget {
// Constructeur avec une clé pour optimisation
const MyApp({super.key});
// 5. Méthode build : définit ce que affiche ce widget
@override
Widget build(BuildContext context) {
// 6. Retourner MaterialApp comme widget principal
return MaterialApp(
// Titre de l'application (multitâche)
title: 'Flutter Demo',
// Configuration du thème
theme: ThemeData(
// Palette de couleurs générée depuis violet
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
// Utiliser Material Design 3 (plus moderne)
useMaterial3: true,
),
// Page d'accueil de l'application
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
🔄 Flux d'exécution
Voici comment Flutter démarre votre application :
1. Lancement
• Le système lance l'application
• Dart exécute la fonction
main()2. Initialisation
•
main() appelle runApp(MyApp())• Flutter initialise le framework
3. Construction du widget racine
• Flutter appelle
MyApp.build()•
MyApp retourne un MaterialApp4. Configuration de l'application
•
MaterialApp configure le thème•
MaterialApp charge la page home5. Affichage
• La page d'accueil s'affiche à l'écran
• L'application est prête !
🎯 Modifier votre première application
Essayons de personnaliser MaterialApp pour mieux comprendre :
Exercice 1 : Changer le titre
MaterialApp(
title: 'Mon Application', // Changez ce texte
// ...
)
Sauvegardez et regardez le titre dans le multitâche de votre téléphone/émulateur.
Exercice 2 : Changer la couleur principale
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.red), // Essayez différentes couleurs
useMaterial3: true,
),
Sauvegardez (Hot Reload) et voyez la barre d'application changer de couleur !
Colors.red, Colors.blue, Colors.green, Colors.orange, Colors.purple, Colors.pink, Colors.teal, Colors.amber, etc.
Exercice 3 : Masquer la bannière DEBUG
MaterialApp(
debugShowCheckedModeBanner: false, // Ajoutez cette ligne
title: 'Mon Application',
// ...
)
La bannière rouge "DEBUG" disparaît !
📱 CupertinoApp - Alternative iOS
Flutter fournit aussi CupertinoApp pour créer des applications avec le design iOS (Cupertino).
import 'package:flutter/cupertino.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return CupertinoApp(
title: 'App iOS Style',
theme: const CupertinoThemeData(
primaryColor: CupertinoColors.systemBlue,
),
home: const CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Accueil'),
),
child: Center(
child: Text('Style iOS'),
),
),
);
}
}
• MaterialApp : Design Android/Google (anguleux, coloré)
• CupertinoApp : Design iOS/Apple (arrondi, minimaliste)
En pratique, la plupart des applications Flutter utilisent
MaterialApp car il fonctionne bien sur toutes les plateformes.
🔍 Approfondir : Options avancées de MaterialApp
Localisation multilingue
import 'package:flutter_localizations/flutter_localizations.dart';
MaterialApp(
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en', ''), // Anglais
Locale('fr', ''), // Français
Locale('es', ''), // Espagnol
],
// ...
)
Gestion des erreurs
MaterialApp(
builder: (context, widget) {
// Personnaliser l'apparence de toute l'app
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: widget!,
);
},
// ...
)
Redirection de navigation
MaterialApp(
onGenerateRoute: (settings) {
// Logique personnalisée pour la navigation
if (settings.name == '/special') {
return MaterialPageRoute(
builder: (context) => SpecialScreen(),
);
}
return null;
},
// ...
)
💡 Points clés à retenir
- main() : Point d'entrée de l'application, appelle
runApp() - runApp() : Initialise Flutter et affiche le widget racine
- MaterialApp : Widget racine qui configure toute l'application
- title : Nom de l'application dans le multitâche
- theme : Apparence globale (couleurs, styles)
- home : Premier écran affiché
- StatelessWidget : Widget qui ne change pas (nous verrons StatefulWidget plus tard)
- build() : Méthode qui définit ce qu'affiche un widget
•
MaterialApp est un widget•
MyApp est un widget• Même votre page d'accueil est un widget
Flutter construit l'interface en assemblant des widgets comme des briques LEGO. C'est le concept fondamental à comprendre !
🎓 Mini-projet : Créer une application personnalisée
Créons une application simple pour mettre en pratique ce que nous avons appris :
import 'package:flutter/material.dart';
void main() {
runApp(const MonApplication());
}
class MonApplication extends StatelessWidget {
const MonApplication({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
// Configuration de l'application
debugShowCheckedModeBanner: false,
title: 'Ma Première App',
// Thème personnalisé
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.teal,
brightness: Brightness.light,
),
useMaterial3: true,
),
// Page d'accueil
home: Scaffold(
appBar: AppBar(
title: const Text('Bienvenue'),
centerTitle: true,
),
body: const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.star,
size: 100,
color: Colors.teal,
),
SizedBox(height: 20),
Text(
'Bonjour Flutter !',
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 10),
Text(
'Ma première application personnalisée',
style: TextStyle(
fontSize: 16,
color: Colors.grey,
),
),
],
),
),
),
);
}
}
Cette application affiche un écran simple avec une étoile et un message de bienvenue. Copiez ce code dans votre main.dart, sauvegardez et admirez le résultat !
Modifiez ce code pour :
• Changer l'icône (
Icons.favorite, Icons.rocket, etc.)• Modifier les couleurs
• Changer les textes
• Ajouter plus d'éléments dans la
ColumnExpérimentez et voyez les changements en temps réel avec le Hot Reload !
1.3.3 – Exécution sur émulateur / mobile
Vous avez créé votre projet Flutter et compris la structure du code. Il est maintenant temps d'exécuter votre application sur différents appareils ! Dans cette section, nous allons voir comment lancer votre app sur un émulateur Android, un appareil physique, et même tester sur d'autres plateformes comme Windows ou le Web.
📱 Exécution sur émulateur Android
L'émulateur Android est parfait pour tester rapidement votre application sans avoir besoin d'un appareil physique.
Vérifier les émulateurs disponibles
Dans Android Studio, en haut de la fenêtre, vous voyez le sélecteur d'appareil. Cliquez dessus pour voir les options disponibles.
Le menu déroulant affiche :
• 📱 Émulateurs Android (ex: "Pixel 6 API 34")
• 📱 Appareils physiques connectés en USB
• 🌐 Chrome (pour version Web)
• 💻 Windows (pour version Desktop)
• ➕ Device Manager (pour gérer les émulateurs)
Si vous n'avez pas d'émulateur
Si aucun émulateur n'apparaît, créez-en un :
- Cliquez sur le sélecteur d'appareil
- Sélectionnez "Device Manager"
- Dans le panneau qui s'ouvre, cliquez sur "Create Device"
Étape 1 : Sélectionner le matériel
• Catégorie "Phone" sélectionnée
• Liste de modèles (Pixel 7, Pixel 6, Pixel 5, etc.)
• Recommandation : Choisir Pixel 6 ou Pixel 7
• Bouton "Next" en bas
- Choisissez un modèle d'appareil (ex: Pixel 6)
- Cliquez sur "Next"
• Onglet "Recommended" sélectionné
• Liste des versions Android disponibles
• UpsideDownCake (API 34) - Android 14.0 - Recommandé
• Colonne "ABI" : x86_64
• Bouton "Download" si pas encore téléchargé
• Bouton "Next" quand téléchargé
- Sélectionnez une image système (recommandé : UpsideDownCake - API 34)
- Si l'image n'est pas téléchargée, cliquez sur "Download" (cela peut prendre quelques minutes)
- Une fois téléchargée, cliquez sur "Next"
• AVD Name : Pixel_6_API_34
• System image : UpsideDownCake x86_64 Android 14.0 (Google APIs)
• Startup orientation : Portrait
• Emulated Performance : Hardware - GLES 2.0
• Bouton "Finish" pour créer l'émulateur
- Vérifiez la configuration et cliquez sur "Finish"
• API 34 (Android 14) : La plus récente, recommandée
• API 33 (Android 13) : Très répandu
• API 30-31 : Compatibilité avec appareils plus anciens
Pour débuter, choisissez la dernière version stable (API 34).
Démarrer l'émulateur
Une fois l'émulateur créé :
- Dans le Device Manager, vous voyez votre nouvel émulateur
- Cliquez sur le bouton ▶️ (Play) à côté de son nom
- L'émulateur se lance (cela prend 30 secondes à 1 minute la première fois)
- Vous voyez l'écran Android s'afficher dans une fenêtre séparée
Lancer votre application sur l'émulateur
Maintenant que l'émulateur est en cours d'exécution :
- Retournez dans Android Studio
- Vérifiez que votre émulateur est sélectionné dans le sélecteur d'appareil (en haut)
- Cliquez sur le bouton vert ▶️ Run (ou appuyez sur Shift+F10)
- Android Studio compile et installe l'application sur l'émulateur
En bas d'Android Studio, l'onglet "Run" affiche :
• "Launching lib/main.dart on Pixel 6 API 34 in debug mode..."
• "Running Gradle task 'assembleDebug'..."
• Barre de progression
• Logs de compilation défilants
• Après 1-3 minutes (première fois) : "✓ Built build/app/outputs/flutter-apk/app-debug.apk"
• "Installing build/app/outputs/flutter-apk/app.apk..."
• "Syncing files to device Pixel 6 API 34..."
• "Flutter run key commands."
Première compilation : 1 à 3 minutes
Compilations suivantes : 10 à 30 secondes (grâce au cache)
📲 Exécution sur appareil physique Android
Tester sur un vrai téléphone offre une meilleure expérience et des performances plus réalistes.
Étape 1 : Activer le Mode Développeur
Sur votre téléphone Android :
- Ouvrez Paramètres
- Allez dans À propos du téléphone (ou Informations)
- Trouvez "Numéro de build" (ou "Version MIUI" pour Xiaomi)
- Appuyez 7 fois rapidement sur cette ligne
- Un message apparaît : "Vous êtes maintenant développeur !"
• Samsung : Paramètres → À propos du téléphone → Informations sur le logiciel
• Xiaomi : Paramètres → À propos du téléphone → Version MIUI
• Google Pixel : Paramètres → À propos du téléphone → Numéro de build
• OnePlus : Paramètres → À propos du téléphone → Numéro de build
• Huawei : Paramètres → Système → À propos du téléphone
Étape 2 : Activer le Débogage USB
- Retournez dans Paramètres
- Cherchez "Options pour les développeurs" (souvent dans Système ou Paramètres supplémentaires)
- Activez "Options pour les développeurs" (interrupteur en haut)
- Descendez et activez "Débogage USB"
- Une boîte de dialogue apparaît : confirmez avec "OK"
Étape 3 : Connecter le téléphone à l'ordinateur
- Branchez votre téléphone à votre ordinateur avec un câble USB
- Sur le téléphone, une notification apparaît : "Autoriser le débogage USB ?"
- Cochez "Toujours autoriser depuis cet ordinateur"
- Appuyez sur "Autoriser" ou "OK"
• Le câble USB est de bonne qualité (certains câbles ne transmettent que la charge)
• Le mode de connexion USB est en "Transfert de fichiers" ou "MTP" (pas juste "Charge")
• Les pilotes USB de votre téléphone sont installés sur Windows
Étape 4 : Vérifier la connexion
Dans Android Studio :
- Regardez le sélecteur d'appareil en haut
- Vous devriez voir votre téléphone apparaître (ex: "Samsung Galaxy S23")
Ou dans le terminal intégré, tapez :
flutter devices
Vous devriez voir votre appareil listé :
2 connected devices:
SM G991B (mobile) • R5CR20XXXXX • android-arm64 • Android 14 (API 34)
Chrome (web) • chrome • web-javascript • Google Chrome 120.0
Étape 5 : Lancer l'application
- Sélectionnez votre appareil dans le sélecteur
- Cliquez sur ▶️ Run
- L'application s'installe sur votre téléphone
- Elle se lance automatiquement
🌐 Exécution sur navigateur Web (Chrome)
Flutter permet aussi de créer des applications Web ! Testons cela.
Vérifier la disponibilité
# Dans le terminal intégré
flutter devices
Vous devriez voir Chrome dans la liste :
Chrome (web) • chrome • web-javascript • Google Chrome 120.0
Lancer sur Chrome
- Dans le sélecteur d'appareil, choisissez "Chrome (web)"
- Cliquez sur ▶️ Run
- Une fenêtre Chrome s'ouvre automatiquement
- Votre application Flutter s'affiche dans le navigateur !
• Pas besoin d'émulateur ou d'appareil
• Hot Reload ultra-rapide
• Parfait pour tester rapidement l'interface
• Utilise les DevTools du navigateur
Limitations :
• Certaines fonctionnalités natives ne sont pas disponibles
• Performances légèrement différentes du mobile
💻 Exécution sur Windows Desktop
Flutter permet de créer des applications Windows natives !
Vérifier la disponibilité
flutter devices
Si configuré, vous verrez :
Windows (desktop) • windows • windows-x64 • Microsoft Windows
Lancer sur Windows
- Sélectionnez "Windows (desktop)"
- Cliquez sur ▶️ Run
- Une fenêtre Windows s'ouvre avec votre application !
⚡ Hot Reload et Hot Restart
Maintenant que votre application tourne, découvrons deux fonctionnalités magiques de Flutter.
Hot Reload (⚡)
Le Hot Reload injecte vos modifications dans l'application en cours d'exécution sans la relancer.
Comment l'utiliser :
- Modifiez votre code dans
main.dart - Sauvegardez le fichier (Ctrl+S ou Cmd+S)
- Les changements apparaissent instantanément dans l'app !
Ou utilisez :
- Le bouton ⚡ Hot Reload dans la barre d'outils d'Android Studio
- Le raccourci Ctrl+\ (Windows) ou Cmd+\ (Mac)
- Dans le terminal : tapez r et Entrée
• L'état de l'application (variables, compteurs, etc.)
• La position dans la navigation
• Les données en mémoire
Exemple : Si votre compteur est à 5 et que vous modifiez le texte, il restera à 5 après le Hot Reload.
Hot Restart (🔄)
Le Hot Restart redémarre complètement l'application mais sans recompiler tout le code.
Quand l'utiliser :
- Après avoir modifié du code d'initialisation (
main()) - Quand Hot Reload ne suffit pas
- Pour réinitialiser l'état de l'application
Comment l'utiliser :
- Bouton 🔄 Hot Restart dans Android Studio
- Raccourci Ctrl+Shift+\
- Dans le terminal : tapez R (majuscule) et Entrée
🛠️ Commandes utiles pendant l'exécution
Quand votre application tourne, vous avez accès à plusieurs commandes dans le terminal :
Flutter run key commands:
r Hot reload. 🔥🔥🔥 # Recharger les changements
R Hot restart. # Redémarrer l'app
h List all available commands. # Afficher toutes les commandes
d Detach (terminate "flutter run"). # Détacher le debugger
c Clear the screen # Nettoyer l'écran
q Quit (terminate the application). # Quitter l'application
# Commandes avancées
p Toggle performance overlay. # Afficher les stats de performance
P Toggle performance overlay (specific). # Stats détaillées
i Toggle widget inspector. # Inspecteur de widgets
o Simulate different operating systems. # Tester différents OS
z Toggle elevation (Material). # Afficher les élévations
t Dump rendering tree to console. # Afficher l'arbre de rendu
L Dump layer tree to console. # Afficher les layers
🐛 Déboguer votre application
Mode Debug vs Release
Par défaut, flutter run lance l'application en mode Debug.
- Mode Debug : Hot Reload activé, performances moyennes, messages de debug
- Mode Release : Performances optimales, pas de Hot Reload, fichier plus léger
# Lancer en mode release (pour tester les performances réelles)
flutter run --release
# Lancer en mode profile (pour profiler les performances)
flutter run --profile
Logs et Console
Pour afficher des informations dans la console :
// Dans votre code
print('Message de debug');
print('Valeur : $variable');
debugPrint('Message avec debugPrint'); // Recommandé pour Flutter
Les logs apparaissent dans le panneau "Run" en bas d'Android Studio.
🎯 Résoudre les problèmes courants
L'application ne se lance pas
Solutions :
- Vérifiez que l'appareil est bien connecté :
flutter devices - Redémarrez l'émulateur ou reconnectez l'appareil
- Nettoyez le projet :
flutter cleanpuisflutter pub get - Vérifiez les erreurs de compilation dans le panneau "Run"
Hot Reload ne fonctionne pas
Solutions :
- Essayez Hot Restart (R) au lieu de Hot Reload (r)
- Vérifiez qu'il n'y a pas d'erreurs de syntaxe
- Relancez complètement l'application
L'émulateur est très lent
Solutions :
- Activez la virtualisation (Intel VT-x ou AMD-V) dans le BIOS
- Allouez plus de RAM à l'émulateur (via Device Manager → Edit)
- Utilisez une image système sans Google Play (plus légère)
- Fermez les autres applications gourmandes en ressources
- Ou mieux : utilisez un appareil physique !
Erreur "Gradle build failed"
Solutions :
# Nettoyer le projet
flutter clean
# Récupérer les dépendances
flutter pub get
# Relancer
flutter run
💡 Points clés à retenir
- Émulateur Android : Créer via Device Manager, pratique pour tester sans appareil
- Appareil physique : Activer mode développeur + débogage USB, meilleure expérience
- Version Web : Lancer sur Chrome, parfait pour tests rapides
- Version Windows : Application desktop native
- Hot Reload (r) : Recharger les changements sans perdre l'état
- Hot Restart (R) : Redémarrer l'app complètement
- Mode Debug : Pour développer (avec Hot Reload)
- Mode Release : Pour tester les vraies performances
- flutter devices : Voir tous les appareils disponibles
- Ctrl+S : Déclencher Hot Reload automatiquement
1. Démarrez l'émulateur ou connectez votre téléphone
2. Lancez l'app une fois avec ▶️ Run
3. Laissez l'app tourner pendant que vous développez
4. Modifiez le code et sauvegardez (Ctrl+S)
5. Hot Reload applique les changements instantanément
6. Répétez les étapes 4-5 autant que nécessaire
7. Ne relancez l'app que si nécessaire (Hot Restart ou changement de configuration)
Vous avez terminé le Chapitre 1 — Introduction à Flutter & Dart !
Vous savez maintenant :
✅ Ce qu'est Flutter et comment l'installer
✅ Les bases de Dart (types, OOP, bonnes pratiques)
✅ Créer un projet Flutter avec Android Studio
✅ Comprendre la structure d'un projet
✅ Comment fonctionne runApp() et MaterialApp
✅ Exécuter votre app sur émulateur, appareil physique, Web et Windows
✅ Utiliser le Hot Reload pour développer rapidement
Vous êtes prêt à plonger dans le monde des widgets Flutter ! 🚀