Files
xstream_tv/lib/main.dart

110 lines
2.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'services/iptv_provider.dart';
import 'screens/login_screen.dart';
import 'screens/home_screen.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
runApp(const XStreamTVApp());
}
class XStreamTVApp extends StatelessWidget {
const XStreamTVApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => IPTVProvider(),
child: MaterialApp(
title: 'XStream TV',
debugShowCheckedModeBanner: false,
theme: ThemeData(
brightness: Brightness.dark,
primarySwatch: Colors.red,
scaffoldBackgroundColor: Colors.black,
appBarTheme: const AppBarTheme(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
),
),
home: const AuthWrapper(),
),
);
}
}
class AuthWrapper extends StatefulWidget {
const AuthWrapper({super.key});
@override
State<AuthWrapper> createState() => _AuthWrapperState();
}
class _AuthWrapperState extends State<AuthWrapper> {
bool _isChecking = true;
@override
void initState() {
super.initState();
_checkAuth();
}
Future<void> _checkAuth() async {
final provider = context.read<IPTVProvider>();
// Auto-login with embedded credentials
await provider.login(
'http://kenmhzxn.fqvpnw.com',
'55UDKCFH',
'6ZNP8Y81',
);
setState(() {
_isChecking = false;
});
}
@override
Widget build(BuildContext context) {
if (_isChecking) {
return const Scaffold(
backgroundColor: Colors.black,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.live_tv, size: 80, color: Colors.red),
SizedBox(height: 24),
Text(
'XStream TV',
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
SizedBox(height: 24),
CircularProgressIndicator(color: Colors.red),
],
),
),
);
}
final provider = context.watch<IPTVProvider>();
if (provider.userInfo != null) {
return const HomeScreen();
}
return const LoginScreen();
}
}