mirror of
https://github.com/R0m1k3/xtremobile.git
synced 2026-10-11 17:29:26 +02:00
75 lines
2.5 KiB
Dart
75 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:hive_flutter/hive_flutter.dart';
|
|
import 'package:media_kit/media_kit.dart';
|
|
import 'core/theme/app_theme.dart';
|
|
import 'core/providers/theme_provider.dart';
|
|
import 'mobile/features/iptv/screens/mobile_playlist_screen.dart';
|
|
import 'mobile/features/iptv/screens/mobile_dashboard_screen.dart';
|
|
import 'core/models/playlist_config.dart';
|
|
|
|
/// Mobile-optimized entry point for XtremFlow IPTV
|
|
/// No authentication - direct access to playlist selection
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// Initialize MediaKit (required for video playback)
|
|
MediaKit.ensureInitialized();
|
|
|
|
// Initialize Hive for local storage
|
|
await Hive.initFlutter();
|
|
|
|
// CLEAR CACHE ON STARTUP (Requested by User)
|
|
try {
|
|
// Clear API/EPG Cache (using default box name 'dio_cache')
|
|
await Hive.deleteBoxFromDisk('dio_cache');
|
|
debugPrint('XtremFlow: API Cache cleared');
|
|
|
|
// Clear Image Cache (if using cached_network_image)
|
|
// Note: flutter_cache_manager needs to be imported if used explicitly,
|
|
// but typically it manages itself. If we want to force clear:
|
|
// await DefaultCacheManager().emptyCache();
|
|
// Since we didn't add the import yet, we'll stick to Hive for now as that handles EPG/API.
|
|
} catch (e) {
|
|
debugPrint('XtremFlow: Failed to clear cache: $e');
|
|
}
|
|
|
|
// Register adapters for Hive
|
|
if (!Hive.isAdapterRegistered(1)) {
|
|
Hive.registerAdapter(PlaylistConfigAdapter());
|
|
}
|
|
|
|
runApp(const ProviderScope(child: MobileApp()));
|
|
}
|
|
|
|
class MobileApp extends ConsumerWidget {
|
|
const MobileApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final themeState = ref.watch(themeProvider);
|
|
|
|
return MaterialApp(
|
|
title: 'XtremFlow IPTV',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: AppTheme.lightTheme,
|
|
darkTheme: AppTheme.darkTheme,
|
|
themeMode: themeState.themeMode,
|
|
// Start directly at playlist selection (no auth)
|
|
home: const MobilePlaylistScreen(),
|
|
onGenerateRoute: (settings) {
|
|
// Handle navigation to dashboard with playlist
|
|
if (settings.name == '/dashboard') {
|
|
final playlist = settings.arguments as PlaylistConfig?;
|
|
if (playlist != null) {
|
|
return MaterialPageRoute(
|
|
builder: (context) => MobileDashboardScreen(playlist: playlist),
|
|
);
|
|
}
|
|
}
|
|
return null;
|
|
},
|
|
);
|
|
}
|
|
}
|