fix: resolve all compile errors from Stitch theme merge

- Add missing AppTheme animation constants (durationSm/Md/Lg/Xl, curveSmooth)
  to satisfy remote widget references.
- Replace deprecated GlassContainer(opacity:) with .glass()/.floating()/.base()
  in login_screen, live_tv_tab, mobile_live_tv_tab, player_screen,
  dashboard_screen.
- Fix const-eval errors by removing const from BorderSide/Text/BoxDecoration
  using AppColors.focusColor and AppColors.border (runtime getters).
- Fix subtitle_service.dart: padEnd → padRight (Dart String API).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 4.7 committed 2026-04-28 07:37:37 +02:00
1 parent 60228f5576
commit b985f11704
7 files changed
+14 -14

No files matched your search

+5
View File
@@ -31,7 +31,12 @@ class AppTheme {
// ============ ANIMATION ============ // ============ ANIMATION ============
static const Duration durationFast = Duration(milliseconds: 200); static const Duration durationFast = Duration(milliseconds: 200);
static const Duration durationNormal = Duration(milliseconds: 300); static const Duration durationNormal = Duration(milliseconds: 300);
static const Duration durationSm = Duration(milliseconds: 200);
static const Duration durationMd = Duration(milliseconds: 300);
static const Duration durationLg = Duration(milliseconds: 400);
static const Duration durationXl = Duration(milliseconds: 500);
static const Curve curveDefault = Curves.fastOutSlowIn; static const Curve curveDefault = Curves.fastOutSlowIn;
static const Curve curveSmooth = Curves.fastOutSlowIn;
// ============ TYPOGRAPHY HELPERS ============ // ============ TYPOGRAPHY HELPERS ============
static TextStyle _spaceGrotesk({ static TextStyle _spaceGrotesk({
+1 -1
View File
@@ -558,7 +558,7 @@ class _UsersTab extends ConsumerWidget {
.withOpacity(0.2), .withOpacity(0.2),
borderRadius: BorderRadius.circular(50), borderRadius: BorderRadius.circular(50),
), ),
child: const Text( child: Text(
'ADMIN', 'ADMIN',
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
+2 -3
View File
@@ -163,11 +163,10 @@ class _LoginScreenState extends ConsumerState<LoginScreen> {
const SizedBox(height: 48), const SizedBox(height: 48),
// Login Form Container // Login Form Container
GlassContainer( GlassContainer.floating(
width: 500, width: 500,
padding: const EdgeInsets.all(48), // Spacious padding padding: const EdgeInsets.all(48), // Spacious padding
borderRadius: 24, borderRadius: 24,
opacity: 0.7,
child: Form( child: Form(
key: _formKey, key: _formKey,
child: Column( child: Column(
@@ -332,7 +331,7 @@ class _LoginScreenState extends ConsumerState<LoginScreen> {
), ),
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.focusColor, width: 2), borderSide: BorderSide(color: AppColors.focusColor, width: 2),
), ),
contentPadding: contentPadding:
const EdgeInsets.symmetric(horizontal: 20, vertical: 20), const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
@@ -170,7 +170,7 @@ class SubtitleService {
final minutes = int.parse(parts[1]); final minutes = int.parse(parts[1]);
final secondsParts = parts[2].split('.'); final secondsParts = parts[2].split('.');
final seconds = int.parse(secondsParts[0]); final seconds = int.parse(secondsParts[0]);
final milliseconds = int.parse(secondsParts[1].padEnd(3, '0')); final milliseconds = int.parse(secondsParts[1].padRight(3, '0'));
return Duration( return Duration(
hours: hours, hours: hours,
+2 -4
View File
@@ -99,9 +99,8 @@ class _LiveTVTabState extends ConsumerState<LiveTVTab>
// HEADER (Glass) // HEADER (Glass)
Padding( Padding(
padding: const EdgeInsets.fromLTRB(24, 16, 24, 16), padding: const EdgeInsets.fromLTRB(24, 16, 24, 16),
child: GlassContainer( child: GlassContainer.glass(
borderRadius: 16, borderRadius: 16,
opacity: 0.6,
padding: padding:
const EdgeInsets.symmetric(horizontal: 20, vertical: 12), const EdgeInsets.symmetric(horizontal: 20, vertical: 12),
child: Row( child: Row(
@@ -288,9 +287,8 @@ class _LiveTVTabState extends ConsumerState<LiveTVTab>
}); });
}, },
borderRadius: 16, borderRadius: 16,
child: GlassContainer( child: GlassContainer.base(
borderRadius: 16, borderRadius: 16,
opacity: 0.2, // Darker glass
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
child: Stack( child: Stack(
children: [ children: [
@@ -144,9 +144,8 @@ class _MobileLiveTVTabState extends ConsumerState<MobileLiveTVTab> {
// Header & Search // Header & Search
Padding( Padding(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: GlassContainer( child: GlassContainer.glass(
borderRadius: 16, borderRadius: 16,
opacity: 0.1,
padding: padding:
const EdgeInsets.symmetric(horizontal: 16, vertical: 8), const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: Row( child: Row(
@@ -352,9 +351,8 @@ class _MobileChannelTile extends StatelessWidget {
? '/api/xtream/${channel.streamIcon}' ? '/api/xtream/${channel.streamIcon}'
: null; : null;
return GlassContainer( return GlassContainer.glass(
borderRadius: 12, borderRadius: 12,
opacity: 0.15,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
child: InkWell( child: InkWell(
onTap: onTap, onTap: onTap,
+1 -1
View File
@@ -42,7 +42,7 @@ class MobileScaffold extends ConsumerWidget {
], ],
), ),
bottomNavigationBar: Container( bottomNavigationBar: Container(
decoration: const BoxDecoration( decoration: BoxDecoration(
color: AppColors.surface, color: AppColors.surface,
border: Border( border: Border(
top: BorderSide( top: BorderSide(