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

@@ -5,6 +5,7 @@ import 'package:google_fonts/google_fonts.dart';
import 'dart:html' as html; // For reloading
import '../../auth/providers/auth_provider.dart';
import '../providers/settings_provider.dart';
import '../providers/xtream_provider.dart';
import 'streaming_settings_tab.dart';
import '../../../core/providers/theme_provider.dart';
import '../../../core/theme/app_colors.dart';
@@ -432,6 +433,16 @@ class _SettingsTabState extends ConsumerState<SettingsTab>
'Changer de Playlist',
style: GoogleFonts.karla(color: AppColors.onSurface),
),
// L'IPTV active, pour savoir d'où viennent guide, enregistrements
// et Auto NBA avant d'en changer.
subtitle: Text(
ref.watch(selectedPlaylistProvider)?.name ?? 'Aucune',
overflow: TextOverflow.ellipsis,
style: GoogleFonts.karla(
color: AppColors.textTertiary,
fontSize: 11,
),
),
trailing: const Icon(Icons.chevron_right, color: AppColors.onSurfaceVariant),
onTap: () => context.go('/playlists'),
),