Atelier 1
Atelier 1
Atelier 1
Objectifs
Le but de cet atelier est de :
• manipuler les éléments de base dans Flutter.
• créer différents widgets (Center, Text, Column, Container, Stack…).
• créer plusieurs pages dans une application avec une navigation entre elles en utilisant le
widget Drawer.
• comprendre la différence entre StatelessWidget et StatefulWidget.
Exercice 1 : HelloWorld
Développez une application qui affiche HelloWorld.
assets:
- images/logo.png
NB. Le widget Center peut contenir un seul widget dans sa propriété child. Pensez à changer
Center par Colum (ou Row) pour utiliser la propriété children permettant de contenir plusieurs
widgets.
5. Ajoutez une zone de texte qui décrit l’image. Pensez à extraire le widget Image dans une
fonction qui s’appelle _widgetImage(). Cette fonction retourne un Widget de type Column
qui a deux enfants (l’image elle-même et le texte qui la décrit). Changer le Column par
Stack et décrivez le résultat.
import 'package:flutter/material.dart';
void main ()=> runApp( MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
routes: {
"/": (context) =>HomePage(), //page principale
"/meteo": (context) =>MeteoPage(),
"/gallery": (context) =>GalleryPage(),
"/counter": (context) =>CounterPage(),
},
theme: ThemeData(
primarySwatch: Colors.deepOrange
),
initialRoute: "/" ,
);
}}
3. Vous remarquez que le widget MaterialApp fait appel aux propriétés routes et
initialRoute. Donnez l’objectif de chacune de ces propriétés.
4. Créez dans le fichier home.page.dart la classe HomePage(). Cette classe hérite de
StatelessWidget. Sa méthode build (BuildContext context) retourne un widget de type
Scaffold ayant les trois propriétés suivantes : drawer, appbar et body. La propriété drawer
crée un objet de la classe MyDrawer().
5. Créez dans le fichier drawer.widget.dart la classe MyDrawer(). Cette classe hérite de
StatelessWidget. Sa méthode build (BuildContext context) retourne un widget de type
Drawer. Le constructeur de la classe Drawer possède la propriété child. Pour créer plusieurs
widgets sous la propriété child, commencez par créer une instance de la classe ListView().
L’objet ListView() peut avoir la propriété children qui à son tour peut contenir un objet de
type DrawerHeader et des objets de type ListTile(). Voir la figure 1.
Drawer DrawerHeader
CircleAvatar
AppBar
AssetImage
ListTile
Scaffold
Icon (propriété:
trailing)
Divider
Icon (propriété:
leading)
ListTile(
title: Text('Counter', style: TextStyle(fontSize: 22)),
leading: Icon(Icons.home, color: Colors.orange,),
trailing: Icon(Icons.arrow_right, color: Colors.orange),
onTap: (){},
),
9. Dans la page counter.page, ajoutez un attribut (int counter=0 ;) dans la classe CounterPage.
Ajoutez ensuite deux boutons flottants à l’aide de la propriété floatingActionButton du
Scaffold.
FloatingActionButton(
heroTag: 'moins',
child: Icon (Icons.remove),
onPressed: ()
{--counter;
);
print(counter); } ),
10. Qu’est-ce que vous remarquez quand vous exécutez la classe CounterPage. Est-ce que le
compteur s’incrémente et se décrémente quand vous cliquez sur les boutons + et - ?
11. Changez l’héritage du CounterPage à StatefulWidget. Utilisez l’assistant de dart (il suffit
de sélectionner le nom de la classe et cliquez sur la lampe jaune puis sur convertir to
StatefulWidget). Qu’est-ce que vous remarquez ?
onPressed: ()
{
setState(() {
--counter;
});