Merge pull request #62 from R0m1k3/antigravity

feat: implement IPTV dashboard screen with Apple TV-style floating to…
This commit is contained in:
LogiFlow authored and GitHub committed 2025-12-07 00:24:17 +01:00
commit 816da5ecc2
4 files changed
+68 -55

No files matched your search

+59 -49
View File
@@ -63,18 +63,67 @@ class _DashboardScreenState extends ConsumerState<DashboardScreen> with SingleTi
], ],
), ),
), ),
child: Stack( child: Row(
alignment: Alignment.center,
children: [ children: [
// 1. Side Elements (Logo & Profile) - Pushed to edges // 1. Logo Area (Fixed Width for centering balance)
Row( SizedBox(
mainAxisAlignment: MainAxisAlignment.spaceBetween, width: 200,
children: [ child: Align(
// Logo Area alignment: Alignment.centerLeft,
_buildLogo(), child: _buildLogo(),
),
),
// Search / Profile (Right Side) // 2. Centered Navigation Tabs (Expanded to fill space, then Centered)
Row( Expanded(
child: Center(
child: Container(
height: 50,
constraints: const BoxConstraints(maxWidth: 600), // Prevent taking too much space
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.1),
borderRadius: BorderRadius.circular(30),
border: Border.all(color: Colors.white.withOpacity(0.05)),
),
child: TabBar(
controller: _tabController,
isScrollable: true,
dividerColor: Colors.transparent,
indicator: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(25),
),
indicatorSize: TabBarIndicatorSize.tab,
indicatorPadding: const EdgeInsets.all(4),
labelColor: Colors.black,
unselectedLabelColor: Colors.white70, // Fixed: Improved readability
labelStyle: GoogleFonts.inter(fontWeight: FontWeight.w700, fontSize: 13),
overlayColor: WidgetStateProperty.all(Colors.transparent),
tabs: List.generate(_tabs.length, (index) {
return Tab(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Icon(_icons[index], size: 18),
const SizedBox(width: 8),
Text(_tabs[index]),
],
),
),
);
}),
),
),
),
),
// 3. Search / Profile (Fixed Width for centering balance)
SizedBox(
width: 200,
child: Align(
alignment: Alignment.centerRight,
child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
IconButton( IconButton(
@@ -91,45 +140,6 @@ class _DashboardScreenState extends ConsumerState<DashboardScreen> with SingleTi
), ),
], ],
), ),
],
),
// 2. Centered Navigation Tabs (Pills)
Container(
height: 50,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.1),
borderRadius: BorderRadius.circular(30),
border: Border.all(color: Colors.white.withOpacity(0.05)),
),
child: TabBar(
controller: _tabController,
isScrollable: true,
dividerColor: Colors.transparent,
indicator: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(25),
),
indicatorSize: TabBarIndicatorSize.tab,
indicatorPadding: const EdgeInsets.all(4),
labelColor: Colors.black, // Active text color (on white)
unselectedLabelColor: Colors.grey,
labelStyle: GoogleFonts.inter(fontWeight: FontWeight.w700, fontSize: 13),
overlayColor: WidgetStateProperty.all(Colors.transparent),
tabs: List.generate(_tabs.length, (index) {
return Tab(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Icon(_icons[index], size: 18),
const SizedBox(width: 8),
Text(_tabs[index]),
],
),
),
);
}),
), ),
), ),
], ],
+3 -2
View File
@@ -148,9 +148,10 @@ class _LiveTVTabState extends ConsumerState<LiveTVTab>
Expanded( Expanded(
child: TextField( child: TextField(
controller: _searchController, controller: _searchController,
style: const TextStyle(fontSize: 14, color: AppColors.textPrimary), style: const TextStyle(fontSize: 14, color: Colors.white),
decoration: const InputDecoration( decoration: const InputDecoration(
hintText: 'Search channels', hintText: 'Rechercher...',
hintStyle: TextStyle(color: Colors.white54),
border: InputBorder.none, border: InputBorder.none,
isDense: true, isDense: true,
contentPadding: EdgeInsets.only(bottom: 11), contentPadding: EdgeInsets.only(bottom: 11),
+3 -2
View File
@@ -214,9 +214,10 @@ class _MoviesTabState extends ConsumerState<MoviesTab> {
Expanded( Expanded(
child: TextField( child: TextField(
controller: _searchController, controller: _searchController,
style: const TextStyle(fontSize: 14, color: AppColors.textPrimary), style: const TextStyle(fontSize: 14, color: Colors.white),
decoration: const InputDecoration( decoration: const InputDecoration(
hintText: 'Search', hintText: 'Rechercher...',
hintStyle: TextStyle(color: Colors.white54),
border: InputBorder.none, border: InputBorder.none,
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
+3 -2
View File
@@ -205,9 +205,10 @@ class _SeriesTabState extends ConsumerState<SeriesTab> {
Expanded( Expanded(
child: TextField( child: TextField(
controller: _searchController, controller: _searchController,
style: const TextStyle(fontSize: 14, color: AppColors.textPrimary), style: const TextStyle(fontSize: 14, color: Colors.white),
decoration: const InputDecoration( decoration: const InputDecoration(
hintText: 'Search', hintText: 'Rechercher...',
hintStyle: TextStyle(color: Colors.white54),
border: InputBorder.none, border: InputBorder.none,
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,