Comment utiliser le widget AppBar dans Flutter
Comment utiliser le widget AppBar dans Flutter
-
Objectifs
- Comprendre ce que sont les appBar et ses propriétés et comment ils peuvent donner une belle apparence visuelle aux applications Flutter.
- Dans ce tutoriel, nous allons apprendre à utiliser l’AppBar fournit par Material Design qui est affiché par défaut lorsque l’on créé un projet Flutter.
-
Présentations
- En Flutter, l’
AppBar
est un widget comme tous les autres composants et elle peut être elle-même composée d’autres widgets. Par exemple, l’AppBar peut contenir un bouton d’action permettant à l’utilisateur de se déconnecter. - L’
AppBar
est l’un des widgets clés pour la création d’une interface utilisateur dans une application Flutter. - Elle est principalement utilisée pour afficher un en-tête en haut de l’écran, généralement pour indiquer le nom de la page, des actions ou des icônes de navigation.
- La plupart du temps,
AppBar
est utilisé dans un widget Scaffold. - En Flutter, Le Scaffold est le widget qui contient notre application. Comme l’
AppBar
, ce widget vient de Material Design et est fourni par Flutter. - Scaffold contient différents Widgets comme l’
AppBar
, le corps de l’application, la bar de navigation (en bas) et un bouton d’action flottant. -
Qu’est-ce qu’une
Appbar
en Flutter ? - L’
AppBar
est un widget de barre d’application dans Flutter qui représente la partie supérieure de l’interface utilisateur de l’application. Elle peut contenir un titre, des actions, un menu de navigation, ou d’autres widgets personnalisés. - Une
AppBar
est une barre d’outils placée en haut d’une application pour smartphone. C’est un élément essentiel que l’on peut retrouver sur la majorité des applications mobiles. - Elle est souvent composée du nom de l’application et de boutons d’action.
- En Flutter, l’
AppBar
est un widget comme tous les autres composants et elle peut être elle-même composée d’autres widgets. Par exemple, l’AppBar
peut contenir un bouton d’action permettant à l’utilisateur de se déconnecter. -
Propriétés principales de l’
AppBar
: - Dans Flutter, la disposition de l’
AppBar
comprend principalement trois composants : leading, title et actions. leading est placé à la position la plus à gauche de l’AppBar
; title et actions apparaît à sa droite. title (Widget)
: Permet de définir le titre de l’AppBar. Il peut s’agir d’un simple texte ou d’un widget plus complexe.actions (List<Widget>)
: Une liste de widgets à afficher du côté droit de l’AppBar, généralement utilisée pour les actions ou les icônes de navigation.backgroundColor (Color)
: La couleur de fond de l’AppBar.elevation (double)
: Définit l’ombre de l’AppBar par rapport au contenu en dessous. Plus la valeur est élevée, plus l’ombre est prononcée.: La luminosité de la barre, généralement utilisée pour définir la couleur du texte. - Contrôle la luminosité de l’AppBar, ce qui a souvent un impact sur la couleur du texte. La luminosité peut être soit Brightness.light (texte sombre sur fond clair) ou Brightness.dark (texte clair sur fond sombre).
iconTheme (IconThemeData)
: Les paramètres de style pour les icônes de l’AppBar
.- Définit les paramètres de style pour les icônes de l’AppBar, y compris la couleur, la taille, etc.
centerTitle (bool)
: Un booléen pour centrer le titre de l’AppBar
.automaticallyImplyLeading
: Un booléen pour afficher automatiquement un bouton de retour en arrière si l’AppBar est la première sur l’écran.- Contrôle si l’AppBar doit automatiquement inclure un bouton de retour (flèche) à gauche pour revenir à l’écran précédent.
-
leading (Widget)
: - Un widget à afficher à gauche de l’
AppBar
, généralement utilisé pour le bouton de retour en arrière. leading
prend un widget et peut se voir attribuer n’importe quoi : du texte, une icône ou même plusieurs widgets dans une rangée.- Vous pouvez contrôler la largeur que leading peut prendre :
- Lorsque nous ajoutons un Drawer au Scaffold, une icône de menu est affectée à leadingpour ouvrir le tiroir.
flexibleSpace
: Un widget flexible à afficher derrière l’AppBar.-
Exemple d’utilisation de
appBar
-
Comment créer un widget
AppBar
Flutter avec des Actions - Pour créer une
AppBar
avec des actions dans Flutter, vous pouvez utiliser lewidget AppBar
et définir la propriété actions pour y ajouter des actions. Voici un exemple de code Flutter qui montre comment créer uneAppBar
avec des actions : - Notre but dans cette exemple est de recréer le bouton d’incrémentation qui était présent dans le code auto-généré.
-
Création de la partie logique du compteur
- Pour notre compteur, nous devons créer une variable dans
_MyHomePageState
et deux méthodes pour modifier notre variable. - Une qui incrémente le compteur et l’autre qui décrémente notre compteur.
-
Design de notre AppBar Flutter
- Maintenant que la partie logique est prête, nous allons nous concentrer sur le design de notre application.
- Avant d’ajouter nos actions, on peut :
- Choisir une icône
- Modifier le titre
- Modifier le corps pour afficher la valeur du compteur
-
Ajouter deux boutons pour l’incrémentation et la décrémentation.
Scaffold(
appBar: AppBar(),
),
AppBar(
title: Text('Mon Application'),
)
AppBar(
actions: [
IconButton(
icon: Icon(Icons.search),
onPressed: () {
// Action à exécuter lors du clic sur l'icône de recherche
},
),
// Autres actions...
],
)
AppBar(
backgroundColor: Colors.blue,
)
AppBar(
elevation: 4.0,
)
AppBar(
brightness: Brightness.dark,
// ou brightness: Brightness.light,
)
AppBar(
iconTheme: IconThemeData(
color: Colors.white, // Couleur des icônes
size: 24.0, // Taille des icônes
),
)
AppBar(
centerTitle: true,
)
AppBar(
automaticallyImplyLeading: true,
)
AppBar (
début : Icône ( Icons . account_circle_rounded ),
leaderWidth : 100 , // la valeur par défaut est 56 ),
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
drawer: Drawer(),
);
}
}
import 'package:flutter/material.dart';
void main()=>runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
int _counter = 0;
// Ajouter 1 au `_counter`
void _incrementCounter() {
setState(() {
_counter+=10;
});
}
// Supprimer 1 au `_counter`
void _decrementCounter() {
setState(() {
_counter-=2;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: const Icon(Icons.menu),
title: const Text("Mon cours AppBar"),
actions: [
IconButton(icon: const Icon(Icons.settings),onPressed:(){},),
IconButton(icon: const Icon(Icons.tab_sharp),onPressed:(){},),
IconButton(icon: const Icon(Icons.search),onPressed:(){},),
],),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'$_counter',
style: const TextStyle(fontSize: 44),
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _incrementCounter,
child: const Text('Incrémenter'),
),
const SizedBox(width: 20),
ElevatedButton(
onPressed: _decrementCounter,
child: const Text('Décrementer'),
),
],
),
],
),
),
);
}
}
class _MyHomePageState extends State {
int _counter = 0;
// Ajouter 1 to the `_counter`
void _incrementCounter() {
setState(() {
_counter++;
});
}
// Supprimer 1 to the `_counter`
void _decrementCounter() {
setState(() {
_counter--;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: Text("Leading"),
title: Text("Flutter AppBar Tutorial"),
actions: <Widget>[Text("First action")],
),
body: Center(),
);
}
}
class _MyHomePageState extends State {
// ................
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
// Mettre une icône dans le `leading`
leading: Icon(Icons.accessibility),
// Changer le nom de l'app
title: Text("Flutter Calculator"),
actions: <Widget>[Text("First action")]),
body: Center(
// Modifier le corps pour afficher le compteur.
child: Text(
'$_counter',
style: TextStyle(fontSize: 50.0),
),
),
);
}
}
class _MyHomePageState extends State {
// ................
actions: <Widget>[
// Premier bouton - decrémente
IconButton(
icon: Icon(Icons.remove), // L'icône "-"
onPressed: _decrementCounter, // La méthode `_decrementCounter`
),
// Second bouton - incrémente
IconButton(
icon: Icon(Icons.add), // L'icône "+"
onPressed: _incrementCounter, // La méthode `_incrementCounter`
),
],
),
body: Center(
.........
Quelques opérations sur une AppBar
de Flutter
-
Comment afficher le titre dans AppBar dans Flutter ?
- Pour afficher un titre à l’intérieur de
AppBar()
, vous devez passer un widget Text() dans le paramètre title. -
Comment aligner le titre en position centrale dans Flutter AppBar ?
- Pour afficher un titre en position centrale, vous devez transmettre une valeur booléenne pour centerTitle
-
Comment changer la couleur de l’AppBar dans Flutter ?
- Pour changer la couleur d’arrière-plan de votre Flutter
AppBar
, vous devez transmettre l’objet Colors en propriété backgroundColor. vous pouvez choisir toutes les couleurs que vous voulez. -
Comment ajouter Icon / IconButton dans AppBar en flutter ?
- Pour ajouter des boutons/icônes dans votre AppBar, nous avons deux méthodes.
- Si vous souhaitez passer l’icône avant le titre, vous devez passer Icon()dans une leadingpropriété.
- Si vous souhaitez transmettre l’icône après le titre, vous devrez peut-être l’ajouter sous
action:[]
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("AppMaking.co"),
),
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("AppMaking.co"),
centerTitle: true,
),
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("AppMaking.co"),
centerTitle: true,
backgroundColor: Colors.green,
),
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("AppMaking.co"),
centerTitle: true,
backgroundColor: Colors.green,
leading: Icon(Icons.menu),
actions: [
IconButton(onPressed: () => {}, icon: Icon(Icons.search)),
IconButton(onPressed: () => {}, icon: Icon(Icons.more_vert)),
],
),
);
}
Exemple Flutter – Création d’une Application avec boite de dialogue
TP Flutter – Création d’une Application avec Gestion de Compteur
-
Objectif :
-
Instructions :
-
Mise en place de l’application :
- Créez un nouveau projet Flutter nommé CounterApp.
- Dans ce projet, vous allez créer une interface utilisateur avec un compteur central.
-
Créer une interface utilisateur simple :
- Utilisez MaterialApp comme point d’entrée de votre application et désactivez la bannière de débogage.
- Créez une page principale (MyHomePage) en utilisant un widget StatefulWidget pour gérer l’état du compteur.
-
Développer le compteur :
- Initialisez un compteur avec une valeur par défaut de 0.
- Ajoutez deux boutons, « Incrémenter » et « Décrémenter« , pour augmenter et diminuer le compteur.
- Incrémenter : Le bouton « Incrémenter » doit ajouter 10 au compteur chaque fois qu’on clique dessus.
- Décrémenter : Le bouton « Décrémenter » doit soustraire 2 du compteur à chaque clic.
- Les deux boutons que vous allez ajouter sont des boutons de type ElevatedButton dans Flutter.
- Un ElevatedButton est un bouton qui s’affiche avec un relief, idéal pour les actions principales de l’interface utilisateur.
- Pour ajouter ces boutons, utilisez le widget ElevatedButton et passez une fonction onPressed qui va contenir la logique de modification du compteur :
- Le bouton Incrémenter appelle la fonction
_incrementCounter
, qui augmente la valeur du compteur de 10. - Le bouton Décrémenter appelle la fonction
_decrementCounter
, qui diminue la valeur du compteur de 2. - Affichez la valeur du compteur dans le centre de l’écran, dans un style de texte large.
-
Ajouter une AppBar avec des actions :
- Dans la partie supérieure de votre application, ajoutez une barre d’application (AppBar) avec un titre de votre choix.
- Sur cette AppBar, ajoutez une icône de menu à gauche.
- À droite, ajoutez trois icônes d’actions : paramètres, onglet, et recherche.
- Les boutons d’actions dans l’AppBar n’ont pas besoin de fonctionnalités supplémentaires pour ce TP.
-
Alignement et mise en page :
- Les boutons « Incrémenter » et « Décrémenter » doivent être centrés horizontalement sous le compteur.
- Séparez les boutons par un espace approprié (20 pixels).
- Le compteur doit être centré verticalement dans l’application.
-
Livrables :
- Le code complet de l’application, avec les fonctionnalités demandées.
- Une capture d’écran de l’application en fonctionnement, montrant les différentes actions de compteur.
-
Conseils :
L’objectif de ce TP est de créer une application Flutter qui gère un compteur. L’utilisateur doit pouvoir augmenter ou diminuer la valeur du compteur en utilisant des boutons interactifs. L’application doit également comporter une barre d’application (AppBar) avec des icônes et des actions.
Exemple d’implémentation :
// Bouton pour incrémenter
ElevatedButton(
onPressed: _incrementCounter, // Fonction qui ajoute 10 au compteur
child: const Text('Incrémenter'),
),
// Bouton pour décrémenter
ElevatedButton(
onPressed: _decrementCounter, // Fonction qui soustrait 2 du compteur
child: const Text('Décrémenter'),
),
Assurez-vous de bien utiliser setState pour mettre à jour la valeur du compteur.
Testez votre application pour vérifier que le compteur se met bien à jour selon les actions sur les boutons.
Exercices d’application
-
Exercice01
- Créez une nouvelle application Flutter avec une AppBar contenant un titre et un bouton de retour en arrière.
- Ajoutez une action à l’AppBar qui affiche une boîte de dialogue lorsque l’utilisateur appuie dessus.
- Modifiez la couleur de fond de l’AppBar pour correspondre au thème de votre choix.
- Explications :
- AppBar :
- Titre : Utilise Text pour afficher un titre.
- Bouton de retour : Utilise IconButton pour naviguer en arrière.
- Action de l’AppBar : Un autre IconButton, qui ouvre une boîte de dialogue lorsque pressé.
- Boîte de dialogue :
- La méthode _showDialog utilise showDialog pour afficher un AlertDialog avec un titre, un contenu et un bouton « OK » pour fermer la boîte.
- Couleur de l’AppBar :
- La couleur de fond de l’AppBar est définie sur vert (Colors.green), mais vous pouvez la modifier selon vos préférences.
-
Exercice02
- Énoncé de l’exercice
- Créez une nouvelle application Flutter avec les spécifications suivantes :
- L’application doit contenir une AppBar avec un titre au choix.
- Ajoutez deux actions à l’AppBar :
- Action 1 : Une icône d’engrenage (icone Settings) qui, lorsqu’elle est cliquée, affiche une boîte de dialogue de paramètres.
- Action 2 : Une icône de recherche (icone Search) qui, lorsqu’elle est cliquée, affiche une boîte de dialogue de recherche.
- Personnalisez la couleur de fond de l’AppBar pour correspondre à un thème de couleur de votre choix.
- Lorsque l’utilisateur clique sur l’icône d’engrenage, affichez une boîte de dialogue avec le texte « Paramètres ». Lorsqu’il clique sur l’icône de recherche, affichez une boîte de dialogue avec le texte « Recherche ».
- Assurez-vous que l’application est bien structurée et que le code est propre et lisible.
- Astuces
- Utilisez le widget AppBar pour créer l’AppBar.
- Utilisez le widget IconButton pour créer des icônes d’action.
- Utilisez le widget AlertDialog pour créer des boîtes de dialogue.