feat: Add mobile IPTV tabs for movies, series, and live TV.

This commit is contained in:
Michael committed 2025-12-20 11:39:37 +01:00
1 parent 7fea892766
commit 3145af9e8d
4 files changed
+88 -34

No files matched your search

@@ -171,6 +171,8 @@ class _MobileLiveTVTabState extends ConsumerState<MobileLiveTVTab>
// Search Bar - Wrapped in TVFocusable for remote access
TVFocusable(
scale: 1.0, // Disable scaling to prevent overflow
focusColor:
Colors.white, // Solid white selection frame
onPressed: () {
setState(() => _isSearchEditing = true);
WidgetsBinding.instance.addPostFrameCallback((_) {
@@ -185,9 +187,7 @@ class _MobileLiveTVTabState extends ConsumerState<MobileLiveTVTab>
decoration: BoxDecoration(
color: AppColors.surface,
borderRadius: BorderRadius.circular(12),
border: _isSearchEditing
? Border.all(color: AppColors.primary)
: null,
// Removed internal editing border here to prevent conflict and "inside frame" look
),
padding:
const EdgeInsets.symmetric(horizontal: 12),
@@ -200,6 +200,8 @@ class _MobileLiveTVTabState extends ConsumerState<MobileLiveTVTab>
child: ExcludeFocus(
excluding: !_isSearchEditing,
child: TextField(
cursorColor:
Colors.white, // Extra safety
controller: _searchController,
focusNode: _searchFocusNode,
readOnly: !_isSearchEditing,
@@ -208,6 +210,9 @@ class _MobileLiveTVTabState extends ConsumerState<MobileLiveTVTab>
decoration: const InputDecoration(
hintText: 'Rechercher une chaîne...',
border: InputBorder.none,
focusedBorder: InputBorder
.none, // Explicitly remove focus border
enabledBorder: InputBorder.none,
isDense: true,
),
onSubmitted: (_) => setState(
@@ -280,6 +280,7 @@ class _MobileMoviesTabState extends ConsumerState<MobileMoviesTab>
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: TVFocusable(
scale: 1.0, // Disable scaling to prevent overflow
focusColor: Colors.white, // Solid white selection frame
onPressed: () {
setState(() => _isSearchEditing = true);
WidgetsBinding.instance.addPostFrameCallback((_) {
@@ -292,9 +293,7 @@ class _MobileMoviesTabState extends ConsumerState<MobileMoviesTab>
decoration: BoxDecoration(
color: AppColors.surface,
borderRadius: BorderRadius.circular(12),
border: _isSearchEditing
? Border.all(color: AppColors.primary)
: Border.all(color: AppColors.border),
// Removed internal editing border here to prevent conflict and "inside frame" look
),
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Row(
@@ -306,6 +305,7 @@ class _MobileMoviesTabState extends ConsumerState<MobileMoviesTab>
child: ExcludeFocus(
excluding: !_isSearchEditing,
child: TextField(
cursorColor: Colors.white, // Extra safety
controller: _searchController,
focusNode: _searchFocusNode,
readOnly: !_isSearchEditing,
@@ -314,6 +314,9 @@ class _MobileMoviesTabState extends ConsumerState<MobileMoviesTab>
decoration: const InputDecoration(
hintText: 'Rechercher un film...',
border: InputBorder.none,
focusedBorder: InputBorder
.none, // Explicitly remove focus border
enabledBorder: InputBorder.none,
isDense: true,
contentPadding: EdgeInsets.only(bottom: 11),
),
@@ -259,6 +259,7 @@ class _MobileSeriesTabState extends ConsumerState<MobileSeriesTab>
const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: TVFocusable(
scale: 1.0, // Disable scaling to prevent overflow
focusColor: Colors.white, // Solid white selection frame
onPressed: () {
setState(() => _isSearchEditing = true);
WidgetsBinding.instance.addPostFrameCallback((_) {
@@ -271,9 +272,7 @@ class _MobileSeriesTabState extends ConsumerState<MobileSeriesTab>
decoration: BoxDecoration(
color: AppColors.surface,
borderRadius: BorderRadius.circular(12),
border: _isSearchEditing
? Border.all(color: AppColors.primary)
: Border.all(color: AppColors.border),
// Removed internal editing border here to prevent conflict and "inside frame" look
),
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Row(
@@ -285,6 +284,7 @@ class _MobileSeriesTabState extends ConsumerState<MobileSeriesTab>
child: ExcludeFocus(
excluding: !_isSearchEditing,
child: TextField(
cursorColor: Colors.white, // Extra safety
controller: _searchController,
focusNode: _searchFocusNode,
readOnly: !_isSearchEditing,
@@ -293,6 +293,9 @@ class _MobileSeriesTabState extends ConsumerState<MobileSeriesTab>
decoration: const InputDecoration(
hintText: 'Rechercher une série...',
border: InputBorder.none,
focusedBorder: InputBorder
.none, // Explicitly remove focus border
enabledBorder: InputBorder.none,
isDense: true,
contentPadding: EdgeInsets.only(bottom: 11),
),