From e74aa822ad768bf524f653fd5cffc2f1fa324994 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Thu, 1 Jan 2026 19:16:51 +0100 Subject: [PATCH] feat: add IPTV player screen supporting live, VOD, and series stream playback via embedded web players. --- lib/features/iptv/screens/player_screen.dart | 46 ++++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/features/iptv/screens/player_screen.dart b/lib/features/iptv/screens/player_screen.dart index e4bcf17..3ebcf27 100644 --- a/lib/features/iptv/screens/player_screen.dart +++ b/lib/features/iptv/screens/player_screen.dart @@ -59,8 +59,6 @@ class _PlayerScreenState extends ConsumerState { bool _isSeeking = false; String _viewId = 'iptv-player'; String? _currentStreamUrl; - String _statusMessage = 'Loading...'; - String? _errorMessage; String? _errorMessage; bool _isMuted = false; bool _ignoreStatusUpdates = false; @@ -730,28 +728,30 @@ class _PlayerScreenState extends ConsumerState { double iconSize = 24, }) { // Simplified button with direct Material/InkWell and PointerInterceptor - // Simplified button with direct Material/InkWell - // Note: PointerInterceptor is handled by the parent container - return Material( - color: transparent ? Colors.transparent : Colors.white.withOpacity(0.1), - shape: const CircleBorder(), - child: InkWell( - onTap: () { - print('[PlayerScreen] Button tapped: $icon'); - onTap(); - }, - customBorder: const CircleBorder(), - child: Container( - width: size, - height: size, - alignment: Alignment.center, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: transparent - ? null - : Border.all(color: Colors.white.withOpacity(0.1)), + // Simplified button with direct Material/InkWell and PointerInterceptor + // We wrap the specific button to ensure it catches events over the iframe + return PointerInterceptor( + child: Material( + color: transparent ? Colors.transparent : Colors.white.withOpacity(0.1), + shape: const CircleBorder(), + child: InkWell( + onTap: () { + print('[PlayerScreen] Button tapped: $icon'); + onTap(); + }, + customBorder: const CircleBorder(), + child: Container( + width: size, + height: size, + alignment: Alignment.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: transparent + ? null + : Border.all(color: Colors.white.withOpacity(0.1)), + ), + child: Icon(icon, color: Colors.white, size: iconSize), ), - child: Icon(icon, color: Colors.white, size: iconSize), ), ), );