Ga naar hoofdinhoud

Architectuuroverzicht

De Ister-player is een Flutter-mediaspeler voor het Ister-mediabeheersysteem. De app verbindt met meerdere Ister-servers tegelijk, authenticeert via OIDC, en speelt tv-afleveringen, films, muziek, podcasts, audioboeken, epubs en strips af — inclusief voortgangsregistratie.

Platformen

  • Android, inclusief Android TV (D-pad-navigatie via TvFocusable) en Android Auto (audio-service-browse-tree)
  • Linux, uitgeleverd als flatpak (app.ister.Player.yaml)
  • Web

Dezelfde widget-tree bedient touch, D-pad en web; platformverschillen worden op widgetniveau opgelost, niet met aparte lay-outs.

Technologiestack

OnderdeelBibliotheek
UI-frameworkFlutter
Audio-/videoweergavemedia_kit (op mpv gebaseerd)
Achtergrondaudio, media session, Android Autoaudio_service
APIGraphQL via graphql_flutter, getypeerde code uit graphql_codegen
Navigatieauto_route (gegenereerde getypeerde routes)
AuthenticatieOIDC (oidc-package, één OidcUserManager per server)

Hoofdstukken

  1. Lagenstructuur — pages, components, services, GraphQL, DTO's
  2. Navigatie en routes — de auto_route-boom, path-params, overlays
  3. Services — alle service-singletons en hun invarianten
  4. Afspeelpijplijn — play queues, MediaPlayerHandler, voortgangssync
  5. GraphQL en codegeneratie — codegen-workflow en querypatronen
  6. Epub-lezer — de native leesstack, sync en voorlezen

Diagrammen

De ene regel om te onthouden

Alles is per server. Service-aanroepen krijgen een serveridentifier mee, tokens en clients leven in maps per server, en het spelende medium kan bij een andere server horen dan de server die op het scherm staat. Los bij navigatie vanuit de afspeel-UI de server dus op via de playback-handler (MediaItemId), nooit via de huidige route.