Table des matières 1
Les éléments à télécharger sont disponibles à l'adresse suivante :
[Link]
Saisissez la référence ENI de l'ouvrage EIFLUT dans la zone de recherche
et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.
Avant-propos
1. Pourquoi cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1 Comment faire son choix ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2 Et dans l’univers du développement mobile ? . . . . . . . . . . . . . . 13
2. À qui s’adresse cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3. Structure de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Chapitre 1
Introduction
1. État des lieux du développement mobile . . . . . . . . . . . . . . . . . . . . . . 15
1.1 Un marché en progression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Application Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Le multiplateforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Historique et versions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Dart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Développement cross-platform . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Le hot reload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Organisation par widgets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Flutter
Développez vos applications mobiles multiplateformes avec Dart
Chapitre 2
Installation de l’environnement
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Installation de Flutter sur Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1 Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Téléchargement du SDK Flutter . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Installation du SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3. Installation de Flutter sur macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2 Téléchargement du SDK Flutter . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3 Installation du SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1 Mojave (et les versions précédentes) . . . . . . . . . . . . . . . . . 35
3.3.2 Catalina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Installation de cocoapods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5 Installation de Xcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4. Installation de Flutter sur Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1 Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Téléchargement du SDK Flutter . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Installation du SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. Mise à jour du SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1 Connaître la version de Flutter installée . . . . . . . . . . . . . . . . . . . 48
5.2 Être au courant des nouveautés et des mises à jour . . . . . . . . . . 49
5.3 Faire la mise à jour du SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6. Installation d’Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2 Pourquoi choisir Android Studio ? . . . . . . . . . . . . . . . . . . . . . . . 50
6.3 Installation d’Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.4 Installation des plug-ins Flutter et Dart . . . . . . . . . . . . . . . . . . . 53
7. Flutter Doctor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2 Analyse de Flutter Doctor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Table des matières 3
7.3 Corrections et validations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3.1 Licence Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3.2 Plug-ins et autres IDE (Visual Studio Code ou IntelliJ) . . 57
7.3.3 Émulateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Chapitre 3
Ma première application
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2. Création d’un nouveau projet Flutter . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.1 Choix du type de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.2 Configuration de l’application. . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3. Le contenu de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1 L’architecture de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2 Le code de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4. Les émulateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2 Paramétrage de l’émulateur Android. . . . . . . . . . . . . . . . . . . . . . 75
4.3 Lancement de la première application. . . . . . . . . . . . . . . . . . . . . 83
5. Premiers widgets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Chapitre 4
Dart, les fondamentaux
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2. Syntaxe de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.1.1 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.1.2 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.1.3 Les booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
2.1.4 Types dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
2.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4 Flutter
Développez vos applications mobiles multiplateformes avec Dart
2.3 Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
2.3.1 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
2.3.2 Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
2.4 Alternatives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
2.4.1 If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
2.4.2 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.4.3 Opérateur ternaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.4.4 Opérateur de nullité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.5 Boucles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
2.5.1 For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
2.5.2 Foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
2.5.3 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
2.5.4 Do While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Chapitre 5
Dart, notions avancées
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2. Fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.2 Fonction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.3 Fonctions avec retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
2.4 Fonctions avec paramètres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
2.4.1 Forme classique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
2.4.2 Paramètres optionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
2.5 Fonctions anonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
2.6 Fonctions fléchées ou fonctions lambda . . . . . . . . . . . . . . . . . . 119
3. Programmation orientée objet (POO). . . . . . . . . . . . . . . . . . . . . . . . 120
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.2 Classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.3 Attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.4 Constructeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.5 Instanciation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Table des matières 5
3.6 Accesseurs et mutateurs (getters et setters) . . . . . . . . . . . . . . . 126
3.7 Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.8 Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.9 Surcharge de méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.10 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.11 Mixin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.12 Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3.13 Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4. Généricité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5. Exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.1 Exceptions systèmes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.2 Exceptions personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.3 Exceptions multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6. Traitement asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Chapitre 6
Les widgets de base
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2. Material Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
2.1 Scaffold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
2.1.1 AppBar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
2.2 floatingActionButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
2.3 FloatingActionButtonLocation . . . . . . . . . . . . . . . . . . . . . . . . . 168
2.4 bottomNavigationBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
2.4.1 BottomAppBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
2.4.2 BottomNavigationBar . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
2.5 Drawer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
3. Cupertino (Style iOS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
3.1 Scaffold de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
3.2 Scaffold avec barre de navigation . . . . . . . . . . . . . . . . . . . . . . . 180
3.3 CupertinoNavigationBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6 Flutter
Développez vos applications mobiles multiplateformes avec Dart
4. Détection de la plateforme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5. Boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.1 FloatingActionButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.2 RaisedButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.3 FlatButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.4 IconButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.5 OutlineButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.6 CupertinoButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
6. Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.1 Icônes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.1.1 Icons (Material Design) . . . . . . . . . . . . . . . . . . . . . . . . . . 210
6.1.2 CupertinoIcons (Style iOS) . . . . . . . . . . . . . . . . . . . . . . . 212
6.1.3 FontAwesome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
6.2 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.2.1 Images du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.2.2 Images du Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
6.3 Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.3.1 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.3.2 Mise en forme du texte . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.3.3 Choix de la police . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.3.4 Google Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.4 Layouts (mise en page). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.4.1 Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.4.2 Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.4.3 Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.4.4 Expanded. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
6.4.5 Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
6.4.6 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
6.4.7 Divider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
6.4.8 Stepper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Table des matières 7
Chapitre 7
Les états
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
2. StatelessWidget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
3. StatefulWidget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
3.1 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
4. Couplage interface et logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
4.1 Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
4.2 BloC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Chapitre 8
Pop-up et navigation
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
2. SnackBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
3. AlertDialog et CupertinoAlertDialog . . . . . . . . . . . . . . . . . . . . . . . . 285
3.1 AlertDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
3.2 CupertinoAlertDialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
4. SimpleDialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
4.1 SimpleDialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
4.2 CupertinoDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
5. Feuilles de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
5.1 BottomSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
5.2 CupertinoActionSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
6. Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
6.1 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
6.2 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
6.3 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
8 Flutter
Développez vos applications mobiles multiplateformes avec Dart
Chapitre 9
Formulaires
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
2. Les champs de saisie de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
2.1 TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
2.2 CupertinoTextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
2.3 Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
2.3.1 Mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
2.3.2 Autres données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
2.4 TextEditingController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
3. Dates et heures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
3.1 Material Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
3.1.1 Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
3.1.2 Heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
3.2 Cupertino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
3.2.1 Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
3.2.2 Heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
4. Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
4.1 Material Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
4.2 Cupertino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5. Radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
6. Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
7. Slider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
7.1 Material Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
7.2 Cupertino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Table des matières 9
Chapitre 10
Listes et grilles
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
2. ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
2.1 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
2.2 Dismissible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
2.3 ListTile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
2.4 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
2.5 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
2.5.1 Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
2.5.2 Inkwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
3. GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
3.1 [Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
3.2 GridTileBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
3.3 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Chapitre 11
API
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
2. Appareil photo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.1 Installation du package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.2 Mise à jour des permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.3 Le code du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
2.4 Rendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
2.5 Vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
3. GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
3.1 Installation du package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
3.2 Mises à jour des permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
3.3 Le code du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
3.4 Rendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
4. Autres API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
10 Flutter
Développez vos applications mobiles multiplateformes avec Dart
Chapitre 12
Données
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
2. Shared Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.2 Récupération des dépendances . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.3 Création de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.3.1 Classe Personne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
2.3.2 [Link]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
2.4 Rendu de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
3. SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.2 Récupération des dépendances . . . . . . . . . . . . . . . . . . . . . . . . . 426
3.3 Création de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.3.1 Classe Personne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.3.2 Classe PersonneProvider. . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.3.3 [Link]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.4 Rendu de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
4. JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
4.2 Récupération des dépendances . . . . . . . . . . . . . . . . . . . . . . . . . 448
4.3 Création de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
4.3.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
4.3.2 L’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
4.4 Rendu de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459