Musynth usesDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/CesarArellano/Music-Player-App/llms.txt
Use this file to discover all available pages before exploring further.
go_router for all in-app navigation. A single GoRouter instance (AppRouter.router) is created at compile time and passed directly to MaterialApp.router. Every destination is a named route defined in the AppRoutes abstract class, so call-sites use string constants rather than raw path strings.
AppRoutes Constants
Route Table
| Name | Path | Screen | Transition | Extra / Path Params |
|---|---|---|---|---|
home | / | HomeScreen | Fade | — |
search | /search | MusicSearchScreen | Fade | — |
songPlayed | /song-played | SongPlayedScreen | Slide up (opaque: false) | extra: { 'isPlaylist': bool, 'playlistId': int? } |
queue | /queue | PlayingQueueScreen | Fade | — |
album | /album/:id | AlbumSelectedScreen | Fade | extra: AlbumModel, path param :id |
artist | /artist/:id | ArtistSelectedScreen | Fade | extra: ArtistModel, path param :id |
genre | /genre/:id | GenreSelectedScreen | Fade | extra: GenreModel, path param :id |
playlist | /playlist/:id | PlaylistSelectedScreen | Fade | extra: PlaylistModel, path param :id |
The
extra object is the primary mechanism for passing model data to detail screens. Path parameters (:id) are present for deep-link compatibility but the screen reads the full model from state.extra rather than re-querying by ID.Transition Animations
AppRouter defines two private factory methods — _fade and _slide — that return a GoRouterPageBuilder wrapping a CustomTransitionPage.
Fade (all routes except /song-played)
- Duration: 250 ms forward and reverse
- Curve:
easeOutCubic(enter) /easeInCubic(exit) - Widget:
FadeTransitionon theopacityproperty
Slide Up (/song-played)
- Duration: 250 ms forward and reverse
- Curve:
easeOutCubic(enter) /easeInCubic(exit) - Widget:
SlideTransitionfromOffset(0, 1)→Offset(0, 0)(bottom-to-top) opaque: false— the route below remains rendered during the transition, allowing the player sheet to appear to rise over the current screen
Navigation Usage
Simple push (no parameters)
Push with extra map (songPlayed)
extra from GoRouterState:
Push with path parameter + extra model (album, artist, genre, playlist)
state.extra, avoiding a redundant repository lookup on navigation:
Router Configuration
AppRouter.router is declared as a static final field and referenced directly in MaterialApp.router:
initialLocation: '/', which resolves to HomeScreen via the home route.