Göm menyn

TDDD80 Projekt: Mobila och sociala applikationer

Laboration F3: Flutter: nätverk


Syfte

Målet med laborationen är att ni ska få en grundläggande förståelse för hur man utför nätverksanrop i Dart samt hur man kan synka detta med användargränssnittet.

Genomförande

Första steget är, som vanligt, att besvara följande frågor:

  1. Vad är 'await' och 'async' för nyckelord och vad betyder dessa i Dart?
  2. Vad är 'Future' i Dart och när används det?
  3. Finns det en widget som låter utvecklaren synka en nätverksförfrågan med användargränssnittet i appen? Vad heter den i så fall och hur fungerar den?

Svaren måste referera till lämpliga källor.

Förberedelser

  1. Börja med att bygga på projektet ifrån laboration 2. Det rekommenderade sättet att göra detta på är att grena ut ifrån laboration 1 i ditt gitlab-repository, men det går också att kopiera över filerna till ett nytt projekt.
  2. Ta bort den gamla datan för laboration 2, då denna nu ska hämtas över nätverket istället. Notera att du kan behöva ändra grejer i den existerande kodbasen p.g.a den här ändringen.
  3. Skapa en ny fil som ska innehålla nätverkslogiken.

Uppgift

Uppgiften är att ersätta de statiska data som användes i laboration 2, och istället hämta data från:

'https://trilogy-server.azurewebsites.net/trilogies'

Datan är i JSON format och behöver omvandlas till de tidigare 'Trilogy' och 'Movie' datatyperna. Utseendet av appen borde bli identiskt med det ifrån laboration 2, förutom att viss fördröjning för att hämta data introduceras.

Lösningen ska ha felhantering och visa ett felmeddelande för användaren ifall ett sådant inträffar. Utöver det här ska även en symbol visas för användaren under tiden man väntar på data.

Tips på nya Widgets som kan användas listas nedan:

  • FutureBuilder
  • CircularProgressIndicator eller LinearProgressIndicator

Dokumentation för dessa widgets hittar du på https://docs.flutter.dev/reference/widgets (Tips: Använd CTRL + F för att söka efter din widget på sidan).

Krav

  • Data som hämtas ska omvandlas till de tidigare datastrukturerna, dvs. till klasserna 'Trilogy' och 'Movie'.
  • Det ska finnas felhantering för ifall förfrågan misslyckas, och ett lämpligt meddelande ska då visas för användaren.
  • En symbol ska visas för användaren för att visualisera att data inte anländit än. Det här kan exempelvis göras med CircularProgressIndicator eller LinearProgressIndicator.
  • Biblioteket http ska användas för att göra nätverksförfrågningar.

Redovisa

  1. Ni ska muntligt redovisa/demonstrera er laboration för en assistent på ett laborationstillfälle. Alla delar, inklusive svar på frågorna, ska redovisas.
  2. Ladda upp era sök-svar inkl. länkar, och er kod (alla relevanta filer för labben) till erat gitlab-repository. Ha gärna separata "grenar" för labbarna om ni har allt i samma gitlab-repository (rekommenderat). Läs mer på denna länk.
  3. Lägg till er assistent som Reporter i erat gitlab-repository. Meddela er assistent att ni lagt upp koden genom att skicka ett mejl. Märk mejlet med TDDD80: Labb F3, och se till att det finns en länk till repot i mejlet.

Sidansvarig: Rita Kovordanyi
Senast uppdaterad: 2025-03-12