Directionality et Text(). Maintenant, nous allons construire progressivement une interface plus complète et professionnelle. Nous découvrirons MaterialApp, qui simplifie beaucoup de choses, puis nous ajouterons des widgets pour structurer et organiser votre interface. Chaque étape introduira un seul nouveau concept, avec du code minimal et clair.
2.3Construire progressivement une interface Flutter
2.3.1 – Introduction à MaterialApp
Dans le chapitre précédent, nous avons utilisé Directionality pour afficher du texte. Cela fonctionne, mais Flutter propose un widget plus puissant et plus simple : MaterialApp. C'est le widget que vous utiliserez dans presque toutes vos applications Flutter.
🎯 Pourquoi MaterialApp ?
MaterialApp est un widget spécial qui configure automatiquement beaucoup de choses pour votre application :
- Il fournit automatiquement le contexte de direction (plus besoin de
Directionalitymanuellement) - Il configure un thème par défaut (couleurs, polices, styles)
- Il gère la navigation entre les écrans
- Il applique le design Material Design (le style de design de Google)
Material Design est un système de design créé par Google. Il définit des règles pour les couleurs, les typographies, les espacements, les animations, etc. En utilisant
MaterialApp, votre application suit automatiquement ces règles, ce qui donne un rendu professionnel et cohérent.
📝 Structure minimale
Voici la structure minimale de MaterialApp :
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp());
}
C'est tout ! MaterialApp() remplace Directionality et configure automatiquement tout ce dont Flutter a besoin.
Si vous exécutez ce code maintenant, vous verrez un écran noir. C'est normal !
MaterialApp a besoin de savoir quoi afficher. Nous allons voir comment lui donner du contenu dans la prochaine section.
🧪 Exemple simple (MaterialApp + Text)
Pour afficher quelque chose, nous devons donner un contenu à MaterialApp. Pour l'instant, utilisons simplement Text() :
MaterialApp et Text().import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Text('Bonjour Flutter !'),
));
}
Analysons ce code :
MaterialApp(: Crée un widget MaterialApphome: Text('Bonjour Flutter !'): Le paramètrehomedéfinit ce qui sera affiché à l'écran. Ici, c'est un widgetText().): Ferme le widgetMaterialApp
Le paramètre
home de MaterialApp définit le premier écran (la page d'accueil) de votre application. C'est ce qui sera affiché quand l'application démarre. Nous explorerons ce paramètre en détail dans la prochaine section.
Avant, nous avions :
runApp(Directionality(
textDirection: TextDirection.ltr,
child: Text('Bonjour Flutter !'),
));
Maintenant, avec MaterialApp, c'est beaucoup plus simple :
runApp(MaterialApp(
home: Text('Bonjour Flutter !'),
));
Plus besoin de Directionality ! MaterialApp le gère automatiquement.
💡 Points clés à retenir
MaterialAppsimplifie la création d'applications Flutter- Il configure automatiquement le contexte de direction, les thèmes, etc.
- Le paramètre
homedéfinit ce qui est affiché à l'écran MaterialAppremplaceDirectionalityet fait beaucoup plus
Dans la section suivante, nous allons explorer le paramètre
home en détail et voir comment l'utiliser avec différents widgets.
2.3.2 – Le paramètre home
Dans la section précédente, nous avons utilisé le paramètre home de MaterialApp. Dans cette section, nous allons comprendre exactement ce qu'est ce paramètre et comment l'utiliser.
🏠 Le premier écran de l'application
Le paramètre home définit le premier écran de votre application. C'est ce qui s'affiche quand l'utilisateur ouvre votre application pour la première fois.
Imaginez une maison. Le paramètre
home est comme la porte d'entrée : c'est la première chose que vous voyez quand vous arrivez. De la même manière, home est la première chose que l'utilisateur voit quand il ouvre votre application.
📦 Accepte un widget enfant
Le paramètre home accepte n'importe quel widget. Cela signifie que vous pouvez y mettre ce que vous voulez : du texte, une image, un bouton, ou même une combinaison de plusieurs widgets.
Pour l'instant, nous n'avons vu que le widget Text(). C'est parfait pour commencer !
🧪 Exemple : home = Text()
Voici un exemple simple avec Text() :
home de MaterialApp.import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Text('Bienvenue dans mon application !'),
));
}
Dans ce code :
MaterialAppcrée l'applicationhome:définit le premier écranText('Bienvenue dans mon application !')est le widget affiché
Le paramètre
home est obligatoire si vous voulez afficher quelque chose. Sans lui, MaterialApp ne saura pas quoi afficher et vous verrez un écran noir.
🎨 Expérimenter avec home
Essayez de modifier le texte dans Text() :
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Text('Ma première application Flutter !'),
));
}
Changez le texte entre les guillemets et observez le résultat. C'est votre premier écran personnalisé !
Le paramètre
home peut contenir n'importe quel widget. Dans les prochaines sections, nous apprendrons à utiliser d'autres widgets pour créer des interfaces plus riches. Pour l'instant, Text() est parfait pour comprendre le concept.
💡 Points clés à retenir
- Le paramètre
homedéfinit le premier écran de l'application - Il accepte n'importe quel widget
- Il est obligatoire si vous voulez afficher quelque chose
- Pour l'instant, nous utilisons
Text()comme exemple simple
Dans la section suivante, nous allons découvrir le widget
Center, qui permet de centrer le contenu à l'écran. Cela rendra votre interface plus agréable visuellement.
2.3.3 – Aligner un widget avec Center
Actuellement, votre texte s'affiche probablement en haut à gauche de l'écran. Pour créer une interface plus agréable, il serait mieux de centrer le texte. C'est là que le widget Center entre en jeu.
🎯 Rôle de Center
Le widget Center centre son contenu au milieu de l'écran (horizontalement et verticalement). C'est un widget très simple mais très utile.
Center prend un widget enfant et le place au centre de l'espace disponible. Si vous mettez un Text() dans un Center, le texte sera centré à l'écran.
📦 Le paramètre child
Center utilise le paramètre child pour définir ce qu'il doit centrer. C'est le widget qui sera affiché au centre.
Voici la structure de base :
Center(
child: Text('Mon texte'),
)
Dans cet exemple, Text('Mon texte') est l'enfant de Center. Le texte sera donc centré à l'écran.
Le mot-clé
child signifie "enfant" en anglais. C'est un paramètre très courant en Flutter. Beaucoup de widgets utilisent child pour définir leur contenu. Vous verrez ce paramètre partout dans Flutter !
🧪 Exemple : Center + Text
Center dans une application Flutter utilisant MaterialApp.
Voici comment utiliser Center avec Text() dans votre application :
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Center(
child: Text('Bonjour Flutter !'),
),
));
}
Analysons ce code :
MaterialAppcrée l'applicationhome:définit le premier écranCenter(crée un widget qui centre son contenuchild: Text('Bonjour Flutter !')définit le texte à centrer)ferme le widgetCenter
Avec ce code, le texte "Bonjour Flutter !" sera affiché au centre de l'écran, au lieu d'être en haut à gauche. C'est beaucoup plus agréable visuellement !
🌳 Structure de l'arbre de widgets
Voici comment les widgets sont organisés dans cet exemple :
MaterialApp
└── home: Center
└── child: Text('Bonjour Flutter !')
MaterialApp contient Center, qui contient Text(). C'est un arbre de widgets simple mais efficace.
Comme nous l'avons vu dans le chapitre précédent, les widgets sont organisés en arbre. Ici,
MaterialApp est la racine, Center est un enfant, et Text() est un petit-enfant. Chaque widget peut avoir des enfants, qui peuvent avoir leurs propres enfants, etc.
💡 Points clés à retenir
Centercentre son contenu au milieu de l'écran- Il utilise le paramètre
childpour définir ce qu'il doit centrer - Le paramètre
childest très courant en Flutter Centerpeut contenir n'importe quel widget (pas seulementText())
Dans la section suivante, nous allons découvrir
Scaffold, un widget qui structure votre page avec une apparence plus professionnelle. Il permet d'ajouter des barres, des zones de contenu, etc.
2.3.4 – Structurer une page avec Scaffold
Jusqu'à présent, nous avons affiché du texte centré. C'est bien pour commencer, mais une vraie application a besoin d'une structure plus complète : une barre en haut, une zone de contenu, etc. C'est là que Scaffold entre en jeu.
🏗️ Pourquoi un Scaffold ?
Scaffold est un widget qui fournit une structure de base pour une page Flutter. Il crée automatiquement :
- Une zone pour le contenu principal (le corps de la page)
- Un espace pour une barre supérieure (que nous verrons dans la prochaine section)
- Une gestion automatique des zones sûres (pour éviter que le contenu soit caché par les encoches des téléphones)
Imaginez que vous construisez une maison.
Scaffold est comme la charpente : il définit la structure de base (où va le toit, où vont les murs, etc.). Ensuite, vous ajoutez le contenu (les meubles, les décorations) à l'intérieur de cette structure.
📝 Ajout d'un Scaffold minimal
Voici comment utiliser Scaffold de manière minimale :
Scaffold minimal avec un texte centré dans une application Flutter.import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
body: Center(
child: Text('Bonjour Flutter !'),
),
),
));
}
Analysons ce code :
MaterialAppcrée l'applicationhome:définit le premier écranScaffold(crée la structure de la pagebody:définit le contenu principal de la pageCenter(centre le contenuchild: Text('Bonjour Flutter !')affiche le texte
Le paramètre
body de Scaffold définit le contenu principal de la page. C'est là que vous placez tout ce que vous voulez afficher : du texte, des images, des boutons, etc. Pour l'instant, nous y mettons un Center avec un Text().
🛡️ Utilisation recommandée de SafeArea
Sur certains téléphones modernes, il y a des encoches (notches) ou des zones qui peuvent cacher une partie de l'écran. Pour éviter que votre contenu soit caché, Flutter propose le widget SafeArea.
SafeArea garantit que son contenu reste dans les zones sûres de l'écran (zones qui ne seront jamais cachées).
Voici un exemple sans SafeArea : le texte pourrait être masqué si l'appareil possède une encoche ou une barre système en haut.
Le widget Scaffold fournit la structure de la page, mais n'empêche pas le contenu d'être caché par les zones à éviter.
Scaffold dont le contenu peut être caché par une encoche ou une barre système, car il n'utilise pas SafeArea.import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
body: Text('Bonjour Flutter !'),
),
));
}
Voici maintenant la version avec SafeArea :
Scaffold dont le contenu est protégé par SafeArea : le texte n'est jamais masqué, même sur un appareil avec encoche ou bords particuliers.import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
body: SafeArea(
child: Text('Bonjour Flutter !'),
),
),
));
}
-
Ici,
SafeAreaenveloppe le widget affiché à l'écran (Text), afin de s'assurer que le contenu reste toujours visible et n'est jamais caché par une encoche ou une barre système. -
Utiliser
SafeAreaest très recommandé : cela garantit que l'interface s'adapte à tous les appareils (smartphones avec bords incurvés, encoches, barres d'état, etc.).
Il est recommandé d'utiliser
SafeArea dans le body de Scaffold, surtout pour le contenu principal. Cela garantit que votre application fonctionnera bien sur tous les appareils, même ceux avec des encoches.
Voici la structure que nous recommandons pour une page Flutter :
MaterialApp
└── home: Scaffold
└── body: SafeArea
└── child: (votre contenu ici)
Cette structure garantit que votre contenu sera bien affiché sur tous les appareils.
💡 Points clés à retenir
Scaffoldfournit une structure de base pour une page- Le paramètre
bodydéfinit le contenu principal SafeAreagarantit que le contenu reste dans les zones sûres- Il est recommandé d'utiliser
SafeAreadans lebodydeScaffold
Dans la section suivante, nous allons ajouter une barre supérieure avec
AppBar. Cela donnera à votre application une apparence encore plus professionnelle.
2.3.5 – Ajouter une barre supérieure avec AppBar
Maintenant que vous avez une page structurée avec Scaffold, ajoutons une barre supérieure. C'est une barre qui apparaît en haut de l'écran et qui peut contenir un titre, des boutons, etc. En Flutter, cette barre s'appelle AppBar.
📊 Rôle d'une AppBar
Une AppBar (Application Bar) est une barre qui apparaît en haut de l'écran. Elle sert généralement à :
Il existe deux types de barres supérieures (top app bar) dans Flutter :
1. Barre supérieure normale (regular top app bar)
2. Barre d'actions contextuelles (contextual action bar)
La plupart du temps, vous utiliserez la barre supérieure normale, mais sachez que Flutter vous permet aussi d'afficher une barre contextuelle pour des actions spécifiques (comme la sélection d'éléments).
- Afficher le titre de la page ou de l'application
- Fournir des boutons d'action (menu, recherche, etc.)
- Donner une apparence professionnelle à l'application
Presque toutes les applications mobiles ont une barre en haut. Par exemple, dans une application de messagerie, la barre en haut affiche souvent le nom de la conversation. Dans une application de navigation, elle affiche la destination. C'est exactement ce qu'est une
AppBar en Flutter.
🔧 AppBar dans Scaffold
AppBar s'utilise avec Scaffold. Le paramètre appBar de Scaffold permet d'ajouter une barre supérieure.
Voici comment l'ajouter :
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: SafeArea(
child: Center(
child: Text('Bonjour Flutter !'),
),
),
),
));
}
Ici, nous avons ajouté appBar: AppBar() dans le Scaffold. Cela crée une barre supérieure vide (sans titre pour l'instant).
Avec ce code, vous verrez une barre bleue en haut de l'écran (c'est la couleur par défaut de
AppBar). Le texte "Bonjour Flutter !" sera toujours centré en dessous.
📝 Le paramètre title
Pour ajouter un titre à la barre, utilisez le paramètre title :
AppBar s’affiche : une barre avec le titre "Mon Application" en haut de l’écran.import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Mon Application'),
),
body: SafeArea(
child: Center(
child: Text('Bonjour Flutter !'),
),
),
),
));
}
Analysons ce code :
appBar: AppBar(crée une barre supérieuretitle: Text('Mon Application')définit le titre affiché dans la barre)ferme le widgetAppBar
Le paramètre
title de AppBar accepte un widget. Ici, nous utilisons Text() pour afficher du texte, mais vous pourriez utiliser d'autres widgets plus tard.
les autres composants de l'AppBar
AppBar Flutter :L’
AppBar peut être personnalisée : couleur, hauteur, icônes, etc.
leading: le widget à gauche (ex : icône de menu, bouton retour)title: le titre centré de la barreactions: une liste de widgets à droite (ex : boutons, menus, icônes d’action)bottom: une barre en bas de l’AppBar (généralement pour des onglets, TabBar)
🌳 Structure complète
Voici la structure complète de l'arbre de widgets avec AppBar :
MaterialApp
└── home: Scaffold
├── appBar: AppBar
│ └── title: Text('Mon Application')
└── body: SafeArea
└── child: Center
└── child: Text('Bonjour Flutter !')
C'est un arbre plus complexe, mais chaque widget a un rôle clair :
MaterialApp: L'application principaleScaffold: La structure de la pageAppBar: La barre supérieure avec le titreSafeArea: Garantit que le contenu reste visibleCenter: Centre le contenuText(): Affiche le texte
💡 Points clés à retenir
AppBarcrée une barre supérieure pour votre page- Elle s'utilise avec le paramètre
appBardeScaffold - Le paramètre
titledéfinit le titre affiché dans la barre AppBardonne une apparence professionnelle à votre application
Dans la dernière section de ce chapitre, nous allons découvrir le Hot Reload, une fonctionnalité magique de Flutter qui permet de voir vos modifications instantanément sans redémarrer l'application.
2.3.6 – Hot Reload avec StatelessWidget
Jusqu'à présent, nous avons écrit tout notre code directement dans la fonction main(). C'est bien pour apprendre, mais pour utiliser le Hot Reload efficacement et créer des applications plus complexes, nous devons organiser notre code différemment. C'est là que StatelessWidget entre en jeu.
⚡ Comprendre le Hot Reload
Le Hot Reload est une fonctionnalité de Flutter qui permet de voir vos modifications de code instantanément dans l'application, sans avoir à redémarrer complètement l'application.
Quand vous modifiez votre code et sauvegardez (ou appuyez sur le bouton Hot Reload), Flutter :
- Détecte les changements dans votre code
- Met à jour uniquement les parties modifiées
- Affiche les changements instantanément dans l'application
👀 Voir les modifications instantanément
Pour tester le Hot Reload, essayez ceci :
- Lancez votre application (bouton "Run" dans votre éditeur)
- Modifiez le texte dans
Text(), par exemple changez "Bonjour Flutter !" en "Hello Flutter !" - Sauvegardez le fichier (Ctrl+S) ou cliquez sur le bouton Hot Reload (⚡) dans votre éditeur
- Observez : le texte change instantanément dans l'application !
- VS Code : Ctrl+S (sauvegarder déclenche souvent le Hot Reload automatiquement) ou Ctrl+Shift+F5
- Android Studio : Ctrl+\ (ou Cmd+\ sur Mac)
main()
ou sur les widgets écrits inline (c’est-à-dire passés directement à runApp() sans classe dédiée).
Si vous voulez profiter du Hot Reload pour vos modifications, organisez votre interface dans des classes qui héritent de StatelessWidget ou StatefulWidget.
🏗️ Utiliser StatelessWidget
Pour que le Hot Reload fonctionne de manière optimale, il est recommandé d'organiser votre code avec des widgets personnalisés. StatelessWidget est la base pour créer vos propres widgets.
Voici comment transformer votre code pour utiliser StatelessWidget :
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: MaPage(),
));
}
class MaPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mon Application'),
),
body: SafeArea(
child: Center(
child: Text('Bonjour Flutter !'),
),
),
);
}
}
Analysons ce code :
class MaPage extends StatelessWidget: Crée une classe qui représente votre page. Elle hérite deStatelessWidget.@override: Indique que nous redéfinissons une méthode de la classe parente.Widget build(BuildContext context): Cette méthode est appelée par Flutter pour construire l'interface. Elle doit retourner un widget.return Scaffold(...): Retourne le widget qui sera affiché (notre structure complète).home: MaPage(): Utilise notre widget personnalisé comme premier écran.
Deuxième façon recommandée
Il existe une autre façon d'organiser votre code : vous pouvez mettre MaterialApp directement dans la méthode build() de votre widget personnalisé :
import 'package:flutter/material.dart';
void main() {
runApp(const MaPage());
}
class MaPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('Mon Application'),
),
body: const SafeArea(
child: Center(
child: Text('Bonjour Flutter !'),
),
),
),
);
}
}
Dans cette version :
runApp(const MaPage())appelle directement votre widget personnalisé avec le mot-cléconstMaterialAppest maintenant dans la méthodebuild()au lieu d'être dansmain()debugShowCheckedModeBanner: falsemasque la bannière de débogage en haut à droite- Les widgets sont marqués avec
constpour optimiser les performances
- Dans le code ci-dessus, modifiez le texte affiché dans le widget
Text('Bonjour Flutter !')par un message personnalisé de votre choix (par exempleText('Je découvre Flutter 🚀')). - Changez également le titre affiché dans la barre supérieure (
AppBar) en modifiant la valeur du widgetTextpassé au paramètretitledeAppBar(par exempletitle: Text('Mon nouveau titre')). - Enregistrez vos modifications (Ctrl+S ou Cmd+S), ou cliquez sur le bouton Save and Hot Reload [⚡].
- Observez le résultat sur votre application : Flutter applique les changements instantanément grâce au Hot Reload, sans besoin de redémarrer l'application !
Remarque : Le Hot Reload permet de voir immédiatement le résultat lorsque vous modifiez l'interface de votre app. Essayez plusieurs textes différents pour constater la rapidité de la mise à jour !
Les deux façons fonctionnent parfaitement pour le Hot Reload. La première façon (avec
MaterialApp dans main()) est plus simple pour débuter. La deuxième façon (avec MaterialApp dans build()) est plus flexible et permet de mieux organiser votre code quand votre application grandit. Les deux approches sont valides. Choisissez celle qui vous semble la plus claire.
const :constindique que le widget est une constante (ne change jamais). Cela améliore les performances.debugShowCheckedModeBanner: falsemasque la petite bannière "DEBUG" qui apparaît en haut à droite en mode développement.
StatelessWidget est un widget qui ne change pas après sa création. C'est parfait pour afficher du contenu statique (qui ne bouge pas). Plus tard, nous découvrirons StatefulWidget pour les widgets qui peuvent changer.
Ne vous inquiétez pas si cette syntaxe vous semble complexe pour l'instant. C'est normal ! L'important est de comprendre que :
- Nous créons une classe
MaPagequi représente notre page - Cette classe a une méthode
build()qui retourne ce qui doit être affiché - Nous utilisons
MaPage()danshome:
🛠️ Le constructeur de MaPage avec super.key
Depuis les dernières versions de Flutter, il est recommandé de passer super.key dans le constructeur du widget, surtout lorsqu’on crée un widget StatelessWidget ou StatefulWidget. Cela permet d’associer à chaque widget une clé (« key ») qui aide Flutter à gérer l’arbre des widgets de façon plus efficace lors des reconstructions.
class MaPage extends StatelessWidget {
const MaPage({super.key}); // 👈 Passage de la clé au parent
@override
Widget build(BuildContext context) {
// ... reste du code
}
}
super.key ?super.keytransmet la clé reçue par le constructeur deMaPageau constructeur de la classe parente (StatelessWidget).- Les « Key » sont utiles lorsque vous avez besoin d’identifier de manière unique un widget ou lorsque vous manipulez des listes de widgets dynamiques.
- Il est désormais conseillé de systématiquement inclure
{super.key}dans les widgets personnalisés même si, au début, vous n’en avez pas besoin — cela rendra votre code prêt pour les cas évolués.
🔄 Différence entre Hot Reload et Hot Restart
Il existe deux façons de mettre à jour votre application :
Hot Reload (Rechargement à chaud)
- Vitesse : Très rapide (moins d'une seconde)
- Ce qu'il fait : Met à jour uniquement le code modifié, préserve l'état de l'application
- Quand l'utiliser : Pour modifier l'interface, changer du texte, ajuster des styles
- Limitation : Ne fonctionne pas pour certains changements (modification de la fonction
main(), ajout de nouvelles classes, etc.)
Hot Restart (Redémarrage à chaud)
- Vitesse : Plus lent que Hot Reload (quelques secondes)
- Ce qu'il fait : Redémarre l'application complètement, réinitialise tout l'état
- Quand l'utiliser : Quand Hot Reload ne fonctionne pas, ou quand vous voulez réinitialiser l'état de l'application
- Avantage : Fonctionne pour tous les types de modifications
- VS Code : Ctrl+Shift+F5
- Android Studio : Ctrl+Shift+\ (ou Cmd+Shift+\ sur Mac)
- Hot Reload : Utilisez-le en priorité. C'est rapide et préserve l'état de votre application.
- Hot Restart : Utilisez-le seulement si Hot Reload ne fonctionne pas ou si vous voulez réinitialiser l'état.
- Redémarrage complet : Utilisez-le seulement si Hot Restart ne fonctionne pas (très rare).
💡 Points clés à retenir
- Le Hot Reload permet de voir les modifications instantanément
StatelessWidgetpermet de créer des widgets personnalisés- La méthode
build()retourne ce qui doit être affiché - Hot Reload est rapide et préserve l'état
- Hot Restart redémarre complètement l'application
Vous avez terminé ce chapitre ! Vous savez maintenant :
- ✅ Utiliser
MaterialApppour créer une application - ✅ Structurer une page avec
Scaffold - ✅ Centrer du contenu avec
Center - ✅ Ajouter une barre supérieure avec
AppBar - ✅ Utiliser
SafeAreapour protéger le contenu - ✅ Créer des widgets personnalisés avec
StatelessWidget - ✅ Utiliser le Hot Reload pour développer rapidement
- ✅
MaterialAppsimplifie la création d'applications - ✅ Le paramètre
homedéfinit le premier écran - ✅
Centercentre le contenu à l'écran - ✅
Scaffoldstructure la page - ✅
SafeAreaprotège le contenu des zones dangereuses - ✅
AppBarajoute une barre supérieure professionnelle - ✅
StatelessWidgetpermet de créer des widgets personnalisés - ✅ Le Hot Reload accélère le développement
Container, Column, Row et Card pour créer des interfaces plus riches. À bientôt ! 🚀