feat: implement IPTV player screen with iframe-based stream support and recordings tab widget

This commit is contained in:
Michael committed 2026-04-01 20:19:40 +02:00
1 parent 77dc9053bb
commit 6a4a642611
13 files changed
+218 -120

No files matched your search

+2 -1
View File
@@ -295,7 +295,8 @@ class RuntimeOptimizations {
hasHighPerformanceDevice = totalMemoryMb > 4000 && storageFreeMb > 5000;
print(
'[Device Calibration] Memory: ${freeMemoryMb}MB, Storage: ${storageFreeMb}MB');
'[Device Calibration] Memory: ${freeMemoryMb}MB, Storage: ${storageFreeMb}MB',
);
}
/// Get dynamic cache size based on available memory
+7 -3
View File
@@ -58,7 +58,9 @@ class GlassContainer extends StatelessWidget {
// BackdropFilter is extremely expensive in Flutter Web on mobile Safari.
// On mobile web (width < 600), skip the blur entirely.
final screenWidth = MediaQuery.of(context).size.width;
final useBlur = blur > 0 && !(Theme.of(context).platform == TargetPlatform.iOS && screenWidth < 600);
final useBlur = blur > 0 &&
!(Theme.of(context).platform == TargetPlatform.iOS &&
screenWidth < 600);
final inner = Container(
padding: padding,
@@ -157,10 +159,12 @@ class _GlassCardState extends State<GlassCard>
);
_scaleAnimation = Tween<double>(begin: 1.0, end: 1.04).animate(
CurvedAnimation(parent: _controller, curve: AppTheme.curveDefault));
CurvedAnimation(parent: _controller, curve: AppTheme.curveDefault),
);
_opacityAnimation = Tween<double>(begin: 1.0, end: 0.8).animate(
CurvedAnimation(parent: _controller, curve: AppTheme.curveDefault));
CurvedAnimation(parent: _controller, curve: AppTheme.curveDefault),
);
}
@override
+4 -2
View File
@@ -285,8 +285,10 @@ class _HeroCarouselState extends State<HeroCarousel>
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.play_arrow,
color: AppColors.textPrimary),
const Icon(
Icons.play_arrow,
color: AppColors.textPrimary,
),
const SizedBox(width: 8),
Text(
'Play',