Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a multi-screen Flutter app (e.g. a browser for movies, recipes, or GitHub repos). Use go_router (or Navigator) with a list screen and a DETAIL screen reached via a path/route parameter. Fetch data from a public API with the http package + async/await, parse JSON into Dart models (fromJson), and render it with a FutureBuilder handling the waiting/error/data states. Manage shared app state with Provider or Riverpod, and persist a small preference (e.g. favorites) with shared_preferences.
go_router/Navigator with a parameterized detail route that resolves correctly (deep-link-ready with go_router).
http + async/await + JSON parsing into models; FutureBuilder handles waiting/error/data states correctly.
Shared state via Provider/Riverpod (UI separated from logic); not prop-drilled through constructors.
A preference persisted with shared_preferences; survives restart.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A multi-screen app with navigation, API & state ## Goal Build a multi-screen Flutter app (e.g. a browser for movies, recipes, or GitHub repos). Use go_router (or Navigator) with a list screen and a DETAIL screen reached via a path/route parameter. Fetch data from a public API with the http package + async/await, parse JSON into Dart models (fromJson), and render it with a FutureBuilder handling the waiting/error/data states. Manage shared app state with Provider or Riverpod, and persist a small preference (e.g. favorites) with shared_preferences. ## Acceptance criteria - [ ] Navigation: go_router/Navigator with a parameterized detail route that resolves correctly (deep-link-ready with go_router). - [ ] Async data: http + async/await + JSON parsing into models; FutureBuilder handles waiting/error/data states correctly. - [ ] State management: Shared state via Provider/Riverpod (UI separated from logic); not prop-drilled through constructors. - [ ] Persistence: A preference persisted with shared_preferences; survives restart. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.