đ±CrĂ©ons une application mobile - Unsplash App
Nous allons maintenant crĂ©er une application mobile qui fait appel Ă une API pour afficher des images et rĂ©aliser des actions dessus. Câest une app de âFond dâĂ©cranâ comme il en existe plein, mais ce sera la vĂŽtre :)

Vous ĂȘtes libre de faire le design que vous voulez, dâailleurs je vous conseil dâutiliser les bibliothĂšque Material Design plutĂŽt que les widgets Cupertino plus difficile Ă utiliser car moins documentĂ©.

On va construire tout doucement cette app, on pourra ensuite la publier sur le PlayStore !
Itération 2 - ListView
Vous allez commencer par afficher une liste dâimage depuis internet en utilisant le widget ListView
Le tableau dâimage Ă afficher dans une liste
List<String> imageUrlListToDisplay = [
"https://picsum.photos/id/1000/800/800",
"https://picsum.photos/id/1005/800/800",
"https://picsum.photos/id/1004/800/800"
];
Résultat attendu
- Une liste dâimage sâaffiche sur votre application
- Les images proviennent dâinternet via le tableau dâURL fourni

Ressources
ItĂ©ration 3 - Utilisation dâune API đ
Maintenant nous allons rĂ©cupĂ©rer les URL depuis Unsplash, qui est un super site avec plein dâimage libre de droit si vous ne connaissez pas.
Inscription sur Unsplash pour rĂ©cupĂ©rer une clĂ© dâAPI
Pour la suite de lâexercice vous allez devoir vous crĂ©er un compte Unsplash pour pouvoir accĂ©der Ă leur API. (Profitez en pour suivre ce super photographe https://unsplash.com/@akhu đ)
- Câest par ici : https://unsplash.com/developers
- Créez ensuite une application et remplissez le formulaire
- RĂ©cupĂ©rez votre clĂ© dâAPI et testez lĂ sur un outil comme Insomnia ou Postman
Nous nâutiliserons que lâauthentification âPublicâ soit : https://unsplash.com/documentation#public-authentication
â Testez sur votre client HTTP la route suivante
https://api.unsplash.com/photos/random
De retour sur Flutter
Maintenant on va faire la mĂȘme chose mais avec votre application Flutter !
Résultat attendu

- Le résultat JSON de la route
/photos
sâaffiche dans la console Flutter - Vous ĂȘtes capable de rĂ©cupĂ©rer lâURL de la premiĂšre image en taille
regular
â et de lâafficher dans la console - Vous avez un modĂšle
UnsplashImage
qui reprĂ©sente sous forme dâobjet Dart le rĂ©sultat json dâune requĂȘte sur Unsplash sur les attributs qui nous intĂ©resse - Vous avez une instance de
UnsplashImage
pour chaque image de lâobjet JSON
đ La classe Dart
représentant le modÚle UnsplashImage
Cette classe sera utilisée pour manipuler les image de l'API Unsplash dans votre application Flutter.
class UnsplashImage {
String id;
String? description;
String regularUrl;
String fullUrl;
String rawUrl; //For downloading image only
String userName; //Attribution to the photographer
String userProfileUrl; //Photographer's profile
String userProfileImage; //Photographer's profile image
int likes;
String? blurHash; //Optional
String? downloadLocation; //Optional
Color? color; //Optional
UnsplashImage.fromJson(Map<String, dynamic> json) { //Todo }
}
Ressources
- đ Guide â Comment faire un appel rĂ©seau avec Flutter et parser les donnĂ©es en retour
- Pour transformer un JSON en spécification de modÚle dans un langage donné
- Sérialiser / Désérialiser du JSON en objet Dart
- Documentation Unsplash pour la route
/photos
Itération 4 - GridView
Nous avons a cette Ă©tape normalement un systĂšme qui rĂ©alise une requĂȘte asynchrone Ă lâAPI dâUnsplash pour rĂ©cupĂ©rer une liste dâimages. Puis nous les âparsonsâ depuis le JSON vers un objet Dart UnsplashImage
.
Nous allons exploiter ces objets pour afficher une grille dâimage.

Résultats attendus
- Une
GridView
affiche les images sous forme dâune grille de 1 ou 2 colonnes (ou plus Ă vous de voir) - Nous pouvons scroller pour afficher la suite des images
- On ne vous demande pas de faire un scroll infini, utilisez le paramĂštre
per_page
de la route dâAPI/photos
pour dĂ©cider combien dâimages vous souhaitez rĂ©cupĂ©rer.
Ressources
Itération 5 - Navigation et détail
Dans cette partie nous allons travailler la navigation avec Flutter, et crĂ©er une autre page dans notre application permettant dâaller voir en dĂ©tails une image avec les informations qui lui sont liĂ©es.
Au clique sur une image aller sur une autre page pour la voir en plus grand sur une page dédiée
Exemple dâun Ă©cran de dĂ©tail pour une image rĂ©cupĂ©rĂ©e

Résultats attendus
On ne demande pas de faire le tĂ©lĂ©chargement de lâimage sur le tĂ©lĂ©phone !
- Lorsque lâon tape sur une image de la
GridView
on accĂšde Ă un Ă©cran de dĂ©tail avec lâimage en plein Ă©cran - On transmet lâobjet
UnsplashImage
Ă la nouvelle vue via leNavigator
- Le systÚme de routing par nom est utilisé pour gérer les routes et vue
- Le photographe est attribué (Photo + Nom) et on peut accéder à son profil en ligne via un bouton
- La description de la photo est affiché si elle est présente
Ressources
- Utilisation de la navigation (Flutter 1.x)
- Ouvrir une URL dans le navigateur depuis Flutter
- GĂ©rer les cliques et les Ă©vĂ©nements dâinteractions
- Passer des données entre les vues
- Lifting State up & Provider
Itération 6
- đ„ Barre de recherche
- đ„đ„ Realiser le systĂšme de Topic comme sur la maquette
- đ„đ„ Utiliser le
blur_hash
- đ„đ„đ„ Mettre en place Provider
- đ„đ„đ„đ„ RĂ©aliser un scroll infini
- đ„đ„đ„đ„đ„ Pouvoir tĂ©lĂ©charger lâimage sur son smartphone
Plus vous aurez de flammes plus vous aurez de points bonus.