Multi-IPTV : nommer l'IPTV active et en changer depuis le rail

Rien à l'écran ne disait sur quelle IPTV on travaillait. Guide,
enregistrements et Auto NBA appartiennent pourtant chacun à une playlist,
et deux playlists montrant le même contenu passaient pour un défaut de
filtrage alors que la sélection elle-même était invisible. Changer d'IPTV
demandait en plus de descendre dans les Réglages.

- PlaylistSelectorButton : nom de l'IPTV active sous son icône dans le
  rail du tableau de bord, et menu de bascule au clic. Écrit comme
  QualitySelectorButton, l'autre sélecteur du projet — même
  PopupMenuButton sous Tooltip, même surfaceContainerHigh, même rayon 16,
  mêmes marques radio. La bascule passe par selectPlaylist, donc le choix
  est persisté avant la première requête.
- Son décalage vaut 68 et non les 56 du menu Profil : ce dernier est
  mesuré depuis un avatar de 40 centré dans le rail de 80, ce
  déclencheur-ci fait 64. Les deux menus s'ouvrent ainsi à la même
  abscisse.
- MobileScaffold n'ayant aucun porteur en haut, l'IPTV active s'affiche
  en sous-titre de l'entrée « Changer de Playlist », dans les réglages
  mobile et desktop.

Vérifié par un agent distinct, après calibration sur une copie portant
une différence plantée. Aucune erreur de compilation relevée à la
lecture ; rien n'est rendu, donc tailles réelles, débordement et
ouverture effective du menu restent non évalués. Le SDK Flutter de cette
machine (3.10.3) est antérieur au ^3.13.0 exigé par le projet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5 committed 2026-10-19 14:39:09 +02:00
1 parent 52504d4e1a
commit ccd983d968
4 files changed
+164 -6

No files matched your search

@@ -10,6 +10,7 @@ import '../widgets/movies_tab.dart';
import '../widgets/series_tab.dart';
import '../widgets/settings_tab.dart';
import '../widgets/recordings_tab.dart';
import '../widgets/playlist_selector_button.dart';
class DashboardScreen extends ConsumerStatefulWidget {
final PlaylistConfig playlist;
@@ -201,6 +202,12 @@ class _DashboardScreenState extends ConsumerState<DashboardScreen> {
const Spacer(),
// IPTV active, nommée et changeable sur place.
Padding(
padding: const EdgeInsets.only(bottom: 12),
child: PlaylistSelectorButton(current: widget.playlist),
),
// Profil : nom d'utilisateur + déconnexion. L'avatar était
// un bouton mort (onTap vide) — aucune déconnexion possible
// depuis le dashboard desktop.