From 37f6ab08db13b8d0c32a7455c1c0811a09c5e611 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Tue, 16 Dec 2025 07:46:14 +0100 Subject: [PATCH] feat: remove video_player_win dependency --- build_log.txt | Bin 68014 -> 942 bytes lib/features/iptv/screens/player_screen.dart | 3 - lib/features/iptv/widgets/live_tv_tab.dart | 3 - lib/features/iptv/widgets/movies_tab.dart | 2 - lib/features/iptv/widgets/series_tab.dart | 4 +- .../iptv/widgets/mobile_series_tab.dart | 65 ++++++++++------ .../iptv/widgets/mobile_settings_tab.dart | 73 ++++++++++++------ lib/mobile/widgets/mobile_scaffold.dart | 7 +- pubspec.yaml | 2 +- 9 files changed, 101 insertions(+), 58 deletions(-) diff --git a/build_log.txt b/build_log.txt index 1c0f614c147fb421435a4bcebca3f0469d68087e..8a9c5f9fc7a576ad27f0125435d199fdd927ecd4 100644 GIT binary patch literal 942 zcmchW&q~8U5XR>$_zrs#MH{Hc90aWu1Qq`rMI<(93^q+oQneSK*QZc_-=?wE9(t2y zv$Heb%zQJm`T88%$fj1a5-ZJF$UZ`op^y2FEk*N+RNEuc#N$(MskoQ;J$t+)X)2pp z4obdH{yxQPVg=aR0^76=JH*4;z#?=JXKf!olCv}XQalrwbis&E*Zb@u{bl>`!?fWz zhI0X1@#wI`X~d4uB zr;7vb6R;V&v7cMZRdt;(uMulzS4a`kf@`1nC0-@f#$cPe)Q8Moh}y%Jvm)ZgXhF5Idbf+s?EWyfSD|M#}(OCpKb}Vxag0l=$LAs ja%*QNtlqQUQ4XTB;uHEzzZq2Czb31jvl5HdY|8QtL3yYX literal 68014 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 QTzYsyFD7I74ot59e`rA;O#lD@ diff --git a/lib/features/iptv/screens/player_screen.dart b/lib/features/iptv/screens/player_screen.dart index 1e46985..5c42948 100644 --- a/lib/features/iptv/screens/player_screen.dart +++ b/lib/features/iptv/screens/player_screen.dart @@ -7,8 +7,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; import '../providers/xtream_provider.dart'; import '../providers/playback_positions_provider.dart'; -import '../providers/settings_provider.dart'; -import '../widgets/lite_player_view.dart'; // ... (existing imports) // ... (existing imports) @@ -17,7 +15,6 @@ import '../../../core/models/iptv_models.dart'; import '../../../core/widgets/tv_focusable_card.dart'; import '../../../core/widgets/glass_container.dart'; import '../../../core/theme/app_colors.dart'; -import '../models/xtream_models.dart'; import '../widgets/epg_overlay.dart'; enum StreamType { live, vod, series } diff --git a/lib/features/iptv/widgets/live_tv_tab.dart b/lib/features/iptv/widgets/live_tv_tab.dart index 0d3874b..365e858 100644 --- a/lib/features/iptv/widgets/live_tv_tab.dart +++ b/lib/features/iptv/widgets/live_tv_tab.dart @@ -8,13 +8,10 @@ import '../screens/player_screen.dart'; import '../../../core/models/iptv_models.dart'; import '../../../core/models/playlist_config.dart'; import '../../../core/theme/app_colors.dart'; -import '../../../core/theme/app_theme.dart'; import '../../../core/utils/responsive_layout.dart'; -import '../../../core/widgets/components/ui_components.dart'; import '../../../core/widgets/themed_loading_screen.dart'; import '../../../core/widgets/glass_container.dart'; import '../../../core/widgets/tv_focusable_card.dart'; -import 'channel_card.dart'; class LiveTVTab extends ConsumerStatefulWidget { final PlaylistConfig playlist; diff --git a/lib/features/iptv/widgets/movies_tab.dart b/lib/features/iptv/widgets/movies_tab.dart index 800337f..213225c 100644 --- a/lib/features/iptv/widgets/movies_tab.dart +++ b/lib/features/iptv/widgets/movies_tab.dart @@ -4,10 +4,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import '../../../core/models/playlist_config.dart'; import '../../../core/theme/app_colors.dart'; -import '../../../core/theme/app_theme.dart'; import '../../../core/utils/responsive_layout.dart'; import '../../../core/widgets/components/hero_carousel.dart'; -import '../../../core/widgets/themed_loading_screen.dart'; import '../../../core/widgets/glass_container.dart'; import '../../../core/widgets/tv_focusable_card.dart'; import '../providers/watch_history_provider.dart'; diff --git a/lib/features/iptv/widgets/series_tab.dart b/lib/features/iptv/widgets/series_tab.dart index 975d7f5..c357746 100644 --- a/lib/features/iptv/widgets/series_tab.dart +++ b/lib/features/iptv/widgets/series_tab.dart @@ -399,7 +399,9 @@ class _SeriesTabState extends ConsumerState { fontWeight: FontWeight.w600, shadows: [ const Shadow( - color: Colors.black, blurRadius: 4), + color: Colors.black, + blurRadius: 4, + ), ], ), maxLines: 2, diff --git a/lib/mobile/features/iptv/widgets/mobile_series_tab.dart b/lib/mobile/features/iptv/widgets/mobile_series_tab.dart index 7693389..c00b015 100644 --- a/lib/mobile/features/iptv/widgets/mobile_series_tab.dart +++ b/lib/mobile/features/iptv/widgets/mobile_series_tab.dart @@ -198,7 +198,9 @@ class _MobileSeriesTabState extends ConsumerState { child: TextField( controller: _searchController, style: GoogleFonts.inter( - fontSize: 14, color: Colors.white), + fontSize: 14, + color: Colors.white, + ), decoration: InputDecoration( hintText: 'Search Series...', hintStyle: GoogleFonts.inter(color: Colors.white54), @@ -211,18 +213,24 @@ class _MobileSeriesTabState extends ConsumerState { ), if (_isSearching) const SizedBox( - width: 12, - height: 12, - child: CircularProgressIndicator( - strokeWidth: 2, color: Colors.white)), + width: 12, + height: 12, + child: CircularProgressIndicator( + strokeWidth: 2, + color: Colors.white, + ), + ), if (_searchQuery.isNotEmpty) GestureDetector( onTap: () { _searchController.clear(); _onSearchChanged(''); }, - child: const Icon(Icons.close, - size: 16, color: Colors.white), + child: const Icon( + Icons.close, + size: 16, + color: Colors.white, + ), ), ], ), @@ -242,7 +250,8 @@ class _MobileSeriesTabState extends ConsumerState { onTap: (item) { try { final series = _series.firstWhere( - (s) => s.seriesId.toString() == item.id); + (s) => s.seriesId.toString() == item.id, + ); _openSeries(series); } catch (e) { // Fallback @@ -286,8 +295,11 @@ class _MobileSeriesTabState extends ConsumerState { ) : Container( color: Colors.white10, - child: const Icon(Icons.tv, - color: Colors.white24)), + child: const Icon( + Icons.tv, + color: Colors.white24, + ), + ), ), // Gradient Overlay @@ -303,11 +315,12 @@ class _MobileSeriesTabState extends ConsumerState { end: Alignment.bottomCenter, colors: [ Colors.transparent, - Colors.black.withOpacity(0.9) + Colors.black.withOpacity(0.9), ], ), borderRadius: const BorderRadius.vertical( - bottom: Radius.circular(16)), + bottom: Radius.circular(16), + ), ), ), ), @@ -320,9 +333,10 @@ class _MobileSeriesTabState extends ConsumerState { child: Text( series.name, style: GoogleFonts.inter( - color: Colors.white, - fontSize: 13, - fontWeight: FontWeight.w600), + color: Colors.white, + fontSize: 13, + fontWeight: FontWeight.w600, + ), maxLines: 2, overflow: TextOverflow.ellipsis, ), @@ -337,19 +351,25 @@ class _MobileSeriesTabState extends ConsumerState { borderRadius: 4, opacity: 0.6, padding: const EdgeInsets.symmetric( - horizontal: 6, vertical: 2), + horizontal: 6, + vertical: 2, + ), child: Row( mainAxisSize: MainAxisSize.min, children: [ - const Icon(Icons.star, - size: 10, color: Colors.amber), + const Icon( + Icons.star, + size: 10, + color: Colors.amber, + ), const SizedBox(width: 4), Text( _formatRating(series.rating)!, style: GoogleFonts.inter( - fontSize: 10, - fontWeight: FontWeight.bold, - color: Colors.white), + fontSize: 10, + fontWeight: FontWeight.bold, + color: Colors.white, + ), ), ], ), @@ -369,7 +389,8 @@ class _MobileSeriesTabState extends ConsumerState { child: Padding( padding: EdgeInsets.all(24), child: Center( - child: CircularProgressIndicator(color: Colors.white)), + child: CircularProgressIndicator(color: Colors.white), + ), ), ), ], diff --git a/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart b/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart index 6000015..ab23a43 100644 --- a/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart +++ b/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart @@ -91,7 +91,9 @@ class _MobileSettingsTabState extends ConsumerState { child: Text( currentUser?.username.substring(0, 1).toUpperCase() ?? 'U', style: const TextStyle( - fontWeight: FontWeight.bold, color: AppColors.primary), + fontWeight: FontWeight.bold, + color: AppColors.primary, + ), ), ), const SizedBox(width: 16), @@ -111,16 +113,21 @@ class _MobileSettingsTabState extends ConsumerState { Container( margin: const EdgeInsets.only(top: 4), padding: const EdgeInsets.symmetric( - horizontal: 8, vertical: 2), + horizontal: 8, + vertical: 2, + ), decoration: BoxDecoration( color: AppColors.primary.withOpacity(0.2), borderRadius: BorderRadius.circular(4), ), - child: const Text('ADMIN', - style: TextStyle( - fontSize: 10, - color: AppColors.primary, - fontWeight: FontWeight.bold)), + child: const Text( + 'ADMIN', + style: TextStyle( + fontSize: 10, + color: AppColors.primary, + fontWeight: FontWeight.bold, + ), + ), ), ], ), @@ -140,18 +147,24 @@ class _MobileSettingsTabState extends ConsumerState { child: Column( children: [ SwitchListTile( - title: const Text('Dark Mode', - style: TextStyle(color: AppColors.textPrimary)), - secondary: Icon(isDark ? Icons.dark_mode : Icons.light_mode, - color: AppColors.primary), + title: const Text( + 'Dark Mode', + style: TextStyle(color: AppColors.textPrimary), + ), + secondary: Icon( + isDark ? Icons.dark_mode : Icons.light_mode, + color: AppColors.primary, + ), value: isDark, onChanged: (_) => themeNotifier.toggleTheme(), activeThumbColor: AppColors.primary, ), const Divider(height: 1), SwitchListTile( - title: const Text('Show Clock', - style: TextStyle(color: AppColors.textPrimary)), + title: const Text( + 'Show Clock', + style: TextStyle(color: AppColors.textPrimary), + ), secondary: const Icon(Icons.access_time, color: AppColors.primary), value: settings.showClock, @@ -181,10 +194,11 @@ class _MobileSettingsTabState extends ConsumerState { items: StreamQuality.values, labelBuilder: (v) => v.name.toUpperCase(), onChanged: (v) { - if (v != null) + if (v != null) { ref .read(iptvSettingsProvider.notifier) .setStreamQuality(v); + } }, ), const Divider(height: 1), @@ -195,8 +209,9 @@ class _MobileSettingsTabState extends ConsumerState { items: BufferSize.values, labelBuilder: (v) => v.name.toUpperCase(), onChanged: (v) { - if (v != null) + if (v != null) { ref.read(iptvSettingsProvider.notifier).setBufferSize(v); + } }, ), const Divider(height: 1), @@ -208,10 +223,11 @@ class _MobileSettingsTabState extends ConsumerState { labelBuilder: (v) => '${v.name.toUpperCase()} (${ref.read(iptvSettingsProvider).timeoutSeconds}s)', onChanged: (v) { - if (v != null) + if (v != null) { ref .read(iptvSettingsProvider.notifier) .setConnectionTimeout(v); + } }, ), const Divider(height: 1), @@ -231,16 +247,19 @@ class _MobileSettingsTabState extends ConsumerState { } }, onChanged: (v) { - if (v != null) + if (v != null) { ref .read(iptvSettingsProvider.notifier) .setTranscodingMode(v); + } }, ), const Divider(height: 1), SwitchListTile( - title: const Text('Auto Reconnect', - style: TextStyle(color: AppColors.textPrimary)), + title: const Text( + 'Auto Reconnect', + style: TextStyle(color: AppColors.textPrimary), + ), secondary: const Icon(Icons.refresh, color: AppColors.primary), value: settings.autoReconnect, @@ -373,9 +392,13 @@ class _FilterInput extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(label, - style: const TextStyle( - fontSize: 12, color: AppColors.textSecondary)), + Text( + label, + style: const TextStyle( + fontSize: 12, + color: AppColors.textSecondary, + ), + ), TextField( controller: controller, style: @@ -476,8 +499,10 @@ class _DropdownSetting extends StatelessWidget { value: value, underline: const SizedBox(), dropdownColor: AppColors.surfaceVariant, - icon: const Icon(Icons.arrow_drop_down, - color: AppColors.textSecondary), + icon: const Icon( + Icons.arrow_drop_down, + color: AppColors.textSecondary, + ), style: const TextStyle(color: AppColors.textPrimary), items: items.map((item) { return DropdownMenuItem( diff --git a/lib/mobile/widgets/mobile_scaffold.dart b/lib/mobile/widgets/mobile_scaffold.dart index bfa8c28..73b621f 100644 --- a/lib/mobile/widgets/mobile_scaffold.dart +++ b/lib/mobile/widgets/mobile_scaffold.dart @@ -48,8 +48,11 @@ class MobileScaffold extends ConsumerWidget { decoration: BoxDecoration( color: const Color(0xFF1C1C1E).withOpacity(0.85), border: Border( - top: BorderSide( - color: Colors.white.withOpacity(0.1), width: 0.5)), + top: BorderSide( + color: Colors.white.withOpacity(0.1), + width: 0.5, + ), + ), ), child: BottomNavigationBar( currentIndex: currentIndex, diff --git a/pubspec.yaml b/pubspec.yaml index c39c149..e0ba01f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,7 +47,7 @@ dependencies: intl: ^0.19.0 equatable: ^2.0.5 shared_preferences: ^2.3.2 - video_player_win: ^3.2.2 +