Išplėsk Pica — trys iššūkiai
Baigiamasis darbas — ne tik paleisti Pica, bet ir išplėsti ją savarankiškai, panaudojant tuos pačius šablonus. Pasirink bent vieną iššūkį (arba visus). Kiekvienas remiasi jau išmokta technika — tai patikrina, ar tikrai supranti sluoksnius.
Iššūkis A — Meniu punkto detalės (lengvas).
Pridėk MenuItemDetail ekraną: paspaudus picą, atsidaro atskiras ekranas su didele nuotrauka, aprašymu ir „Add to cart".
- Panaudoji: Nav3
Screen.MenuItemDetail(itemId)(4 pamoka, jau yra sealed klasėje), esamąMenuItemdomeną. - Šablonas: navigacija su argumentu + esamas krepšelio
Event.
Iššūkis B — Užsakymo būsenos atnaujinimas (vidutinis).
Užsakymų istorijoje rodyk „live" statusą (created → preparing → ready). Pridėk „Refresh" arba periodinį GET /orders.
- Panaudoji:
OrderHistoryViewModel(9), MVILoading/Success/Error, autentifikuotą užklausą. - Šablonas: tas pats repozitorija → ViewModel → būsena srautas, tik su atnaujinimu.
Iššūkis C — Mėgstamiausios picos (sunkus).
Leisk pažymėti picą kaip mėgstamą; saugok tai Room talpykloje (nauja @Entity favorites), rodyk atskirame skirtuke.
- Panaudoji: Room (7) su nauja lentele ir DAO, Koin naują
single, MVI naują ekraną. - Šablonas: cache-then-nothing (grynai vietinis) — priešingybė meniui, kur tinklas yra tiesos šaltinis.
Kiekvienam iššūkiui prieš rašydamas kodą atsakyk: kuris sluoksnis keičiasi? Kokį Event pridedi? Kokia nauja UiState? Ką injektuoji per Koiną? Jei gali atsakyti — architektūrą supratai.
Patarimas. Nekurk naujų šablonų. Visi trys iššūkiai sprendžiami kartojant tai, ką jau darei: naujas
Event, naujasUiState, naujassinglemoduliuose. Būtent tai ir yra gerai suprojektuotos architektūros dovana — plėtra jaučiasi kaip „daugiau to paties", ne kaip perrašymas.