Aller au contenu principal

Travail 1 - Flutter

Général

Contenu du TP

  • Interface graphique en flutter
  • Accès réseau avec la librairie dio

Serveur fourni

Le serveur écrit en Spring Boot est fourni.

Vous devrez mettre en place des classes de transfert en Dart en cous inspirant des classes de transfert utilisées dans le projet serveur : DTO en java.

Repository Git

Ces points sont conditionnés à la remise d'au moins un commit toutes les 2 séances de cours.

2 points Un minimum de 5 commits de tailles comparables. Au moins un commit par semaine de cours. De plus, il n'y a pas un commit avec tout dedans et les autres vides. Les commits décrivent l'avancement du projet dans un français correct (passe Word). Ces points sont conditionnés à la remise d'au moins un commit par semaine de cours.

Ecran d'inscription

Interface

2 points Écran d'inscription permet à l'utilisateur de créer un compte.

  • Un champ pour le nom de l'utilisateur
  • Un champ pour le mot de passe qui est caché (.....)
  • Un champ pour la confirmation du mot de passe qui est caché
  • Un bouton inscription qui mène à l'écran principal (un utilisateur qui crée un compte est automatiquement connecté)

Accès Réseau

2 points Vous devez effectuer l'appel d'inscription sur un appui sur le bouton: /api/id/signup en POST, classes de transfert sont SignupRequest et SigninResponse.

L'application doit gérer correctement les cookies pour que le serveur maintienne votre identité à travers les différents appels.

Écran de connexion

Interface

2 points L'application doit démarrer sur un écran de connexion.

  • Un champ pour le nom de l'utilisateur
  • Un champ pour le mot de passe qui est caché (.....)
  • Un bouton de connexion qui amène à l'écran d'accueil
  • Un bouton inscription qui mène à l'écran d'inscription

Accès Réseau

2 points Vous devez effectuer l'appel d'inscription quand on appuie sur le bouton : /api/id/signin en POST, classes de transfert sont SigninRequest et SigninResponse.

ATTENTION SI VOUS NE FAITES PAS INSCRIPTION ET CONNEXION, VOUS NE POURREZ PAS FAIRE LES OPÉRATIONS SUIVANTES.


Écran de création

Interface

2 points L'écran de création permet de créer une tâche qui s'ajoutera dans la liste des tâches de l'utilisateur.

  • Un champ nom pour le nom de la tâche
  • Un moyen d'entrer la date d'échéance de la tâche
  • Un bouton d'ajout qui mène à l'écran d'accueil

Accès Réseau

1 points L'appui sur le bouton envoie une requête réseau : /api/add en POST, envoie un AddTaskRequest et ne reçoit rien.

ATTENTION SI VOUS POUVEZ PAS CRÉER DE TÂCHE, VOUS NE POURREZ PAS AVOIR LES POINTS DE CONSULTATION OU DE LISTE.

Écran d'accueil

Interface

L'écran d'accueil affiche la liste des tâches de l'utilisateur.

  • 1 point Il faut une option / menu / bouton qui mène à l'écran de création d'une tâche
  • 1 point Un appui sur un item de la liste mène à l'écran de consultation
  • 3 points Une liste des tâches
  • Pour chaque élément d'information, vous pouvez choisir d'afficher du texte et/ou un élément graphique. Vous devez faire preuve d'imagination pour l'affichage.

Chaque item de la liste contient le nom de la tâche, le pourcentage d'avancement de la tâche, le pourcentage de temps écoulé et la date limite

Accès Réseau

2 points /api/home en GET, n'envoie rien (identifié grâce à ton cookie), reçoit une liste de HomeItemResponse.


Écran de consultation

Interface

L'écran de consultation permet de voir le nom et la date de la tâche. Elle permet de changer le pourcentage d'avancement.

1 point Présence des éléments suivants

  • On voit le nom et la date d'échéance de la tâche
  • On voit le pourcentage d'avancement
  • On voit le pourcentage de temps écoulé depuis la création de la tâche

2 points Il y a un moyen pour modifier le pourcentage d'avancement

Accès Réseau

Vous devez charger le détail de la tâche: 1 point /api/detail/{id} GET prend l'id de la tâche et renvoie un TaskDetailResponse.

Vous devez faire l'appel pour la mise à jour du pourcentage d'avancement: 1 point /api/progress/{id}/{valeur} GET envoie l'id de la tâche et la nouvelle valeur d'avancement entre 0 et 100.

Tiroir de navigation

Interface

2 points Le tiroir doit afficher le nom d'utilisateur connecté (issu du SigninResponse). Nous vous recommandons de le stocker dans un singleton pour y avoir accès dans tous les écrans.

Il permet d'accéder rapidement à tous les écrans principaux:

  • 1 point Le tiroir est présent dans tous les écrans SAUF inscription et connexion. On a le nom de l'utilisateur courant affiché. Il y a les options Accueil, Ajout de tâche et Déconnexion.
  • 3 points Le tiroir fonctionne dans tous les écrans SAUF inscription et connexion. Accueil amène à l'écran d'Accueil, Ajout de tâche amène à l'écran d'Ajout de tâche et Déconnexion amène à l'écran de Connexion.
  • 1 point Il y a le hamburger dans l'ActionBar qui déclenche le tiroir

Accès Réseau

La déconnexion se fait à partir du tiroir de navigation. Elle doit être fonctionnel dans tous les écrans avec le tiroir: 1 point /api/id/signout en POST