2024-2025 Enseignante : Dorra Yangui Lahyani
TP (Les Boucles et Conditions en
Flutter avec Dart)
Dans le développement Flutter, les boucles et les conditions sont des concepts
fondamentaux pour gérer le flux logique et itératif de ton code. Ils permettent de
contrôler la façon dont certaines actions sont exécutées en fonction des valeurs et
des événements, et sont souvent utilisés pour générer des widgets dynamiques ou
répondre aux actions de l'utilisateur.
1. Les Conditions en Flutter (Dart)
Une condition permet de prendre une décision dans le flux d'exécution du
programme en fonction d'une expression booléenne (vraie ou fausse).
• Structure de base :
• if
• else if
• else
Exemple d'une simple condition if-else :
void main() {
int age = 20;
if (age >= 18) {
print("Vous êtes majeur.");
} else {
print("Vous êtes mineur.");
}
}
Conditions multiples avec else if :
void main() {
int temperature = 25;
2024-2025 Enseignante : Dorra Yangui Lahyani
if (temperature > 30) {
print("Il fait chaud !");
} else if (temperature > 20) {
print("Il fait beau.");
} else {
print("Il fait froid.");
}
}
Dans une application Flutter, tu peux également utiliser des conditions dans la
méthode build() pour décider quel widget afficher en fonction des données.
Exemple dans Flutter :
@override
Widget build(BuildContext context) {
bool isUserLoggedIn = true;
return Scaffold(
body: Center(
child: isUserLoggedIn
? Text('Bienvenue, utilisateur !')
: Text('Veuillez vous connecter.'),
),
);
}
2. Les Boucles en Flutter (Dart)
Les boucles permettent de répéter un bloc de code plusieurs fois jusqu'à ce qu'une
condition ne soit plus satisfaite. En Flutter, les boucles sont souvent utilisées pour
générer des listes de widgets ou traiter des collections de données.
Les Types de Boucles :
1. Boucle for : Elle est utilisée lorsque tu sais combien de fois tu veux exécuter
un bloc de code.
Exemple d'une boucle for :
2024-2025 Enseignante : Dorra Yangui Lahyani
void main() {
for (int i = 0; i < 5; i++) {
print("Compteur: $i");
}
}
2. Boucle while : Elle s'exécute tant qu'une condition reste vraie.
Exemple d'une boucle while :
void main() {
int i = 0;
while (i < 5) {
print("Compteur: $i");
i++;
}
}
3. Boucle do-while : Elle s'exécute au moins une fois avant de vérifier la
condition.
Exemple d'une boucle do-while :
void main() {
int i = 0;
do {
print("Compteur: $i");
i++;
} while (i < 5);
}
Boucles dans Flutter (générer des widgets) :
Dans Flutter, tu peux utiliser des boucles pour créer dynamiquement des widgets à
partir d'une liste ou d'une collection de données.
Exemple : Créer des ListTiles avec une boucle for :
2024-2025 Enseignante : Dorra Yangui Lahyani
@override
Widget build(BuildContext context) {
List<String> fruits = ['Pomme', 'Banane', 'Orange', 'Mangue'];
return ListView(
children: [
for (var fruit in fruits)
ListTile(
title: Text(fruit),
)
],
);
}
Utilisation de .map() pour générer des widgets :
Tu peux aussi utiliser la méthode map() pour transformer une liste en une liste de
widgets, ce qui est particulièrement utile lorsque tu veux générer un ensemble
d'éléments UI à partir d'une collection de données.
@override
Widget build(BuildContext context) {
List<int> numbers = [1, 2, 3, 4, 5];
return ListView(
children: [Link]((number) {
return ListTile(
title: Text('Numéro : $number'),
subtitle: Text(number % 2 == 0 ? 'Pair' : 'Impair'),
);
}).toList(),
);
}
3. Combinaison de Boucles et Conditions
Tu peux combiner les boucles et les conditions pour créer des logiques plus
complexes.
Exemple : Afficher seulement les nombres pairs d'une liste :
2024-2025 Enseignante : Dorra Yangui Lahyani
@override
Widget build(BuildContext context) {
List<int> nombres = [1, 2, 3, 4, 5, 6, 7, 8];
return ListView(
children: [
for (var nombre in nombres)
if (nombre % 2 == 0)
ListTile(
title: Text('Nombre pair: $nombre'),
),
],
);
}
Applications Pratiques dans Flutter
Voici quelques exemples de situations où les boucles et conditions sont souvent
utilisées dans une application Flutter :
1. Génération dynamique d'éléments d'interface : Utiliser des boucles pour
créer des éléments de liste, des grilles d'images ou des boutons de manière
dynamique.
@override
Widget build(BuildContext context) {
List<String> items = ['A', 'B', 'C', 'D'];
return ListView(
children: [Link]((item) => Text(item)).toList(),
);
}
2. Gestion des états : Utiliser des conditions pour afficher différents widgets en
fonction de l'état d'une application (par exemple, un bouton de connexion si
l'utilisateur n'est pas connecté).
@override
Widget build(BuildContext context) {
bool isLoggedIn = false;
2024-2025 Enseignante : Dorra Yangui Lahyani
return Scaffold(
body: Center(
child: isLoggedIn
? Text('Bienvenue, utilisateur !')
: ElevatedButton(
onPressed: () {
print('Connexion...');
},
child: Text('Connexion'),
),
),
);
}