Files
xtremflow/lib/mobile/widgets/mobile_scaffold.dart
T
MichaelandClaude Opus 4.7 f7eaa724e2 feat(theme): complete redesign to Cyber-Cinematic Glass (Stitch)
Replace the legacy Apple TV-style purple/cyan theme with the full
Google Stitch Cyber-Cinematic Glass design system across the
entire app (desktop + mobile).

- New Material 3 dark ColorScheme: background #121317, primary
  #adc6ff, primaryContainer #4b8eff, surface containers, etc.
- Typography: Space Grotesk (headlines) + Inter (body/labels)
- 3-level glassmorphism via GlassContainer: base, glass, floating
- Primary gradient: #007AFF → #00C6FF with blue glow effects
- Removed old compatibility aliases (focusColor, border, textPrimary,
  textSecondary); all code now uses semantic Stitch tokens
- Systematically replaced all Colors.white/black/red/grey and
  GoogleFonts.roboto/outfit with Stitch equivalents
- All 36 lib/ files updated, zero compilation errors

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 22:06:29 +02:00

98 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:google_fonts/google_fonts.dart';
import 'dart:ui';
import '../../../core/theme/app_colors.dart';
class MobileScaffold extends ConsumerWidget {
final Widget child;
final int currentIndex;
final Function(int) onIndexChanged;
const MobileScaffold({
super.key,
required this.child,
required this.currentIndex,
required this.onIndexChanged,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
extendBody: true,
backgroundColor: AppColors.background,
body: Stack(
fit: StackFit.expand,
children: [
// Global Background
Container(
decoration: const BoxDecoration(
gradient: RadialGradient(
center: Alignment.center,
radius: 1.5,
colors: [
AppColors.surfaceContainerLow,
AppColors.background,
],
),
),
),
// Content
child,
],
),
bottomNavigationBar: ClipRRect(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
child: Container(
decoration: BoxDecoration(
color: AppColors.surfaceContainerLow.withOpacity(0.85),
border: Border(
top: BorderSide(
color: AppColors.outlineVariant.withOpacity(0.5),
width: 0.5,
),
),
),
child: BottomNavigationBar(
currentIndex: currentIndex,
onTap: onIndexChanged,
backgroundColor: Colors.transparent,
type: BottomNavigationBarType.fixed,
elevation: 0,
selectedItemColor: AppColors.onSurface,
unselectedItemColor: AppColors.onSurfaceVariant,
selectedLabelStyle:
GoogleFonts.inter(fontWeight: FontWeight.w600, fontSize: 11),
unselectedLabelStyle:
GoogleFonts.inter(fontWeight: FontWeight.w500, fontSize: 11),
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.live_tv_rounded),
label: 'Live',
),
BottomNavigationBarItem(
icon: Icon(Icons.movie_outlined),
activeIcon: Icon(Icons.movie_rounded),
label: 'Movies',
),
BottomNavigationBarItem(
icon: Icon(Icons.video_library_outlined),
activeIcon: Icon(Icons.video_library_rounded),
label: 'Series',
),
BottomNavigationBarItem(
icon: Icon(Icons.settings_outlined),
activeIcon: Icon(Icons.settings_rounded),
label: 'Settings',
),
],
),
),
),
),
);
}
}