import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'core/theme/app_theme.dart'; import 'features/auth/cubit/auth_cubit.dart'; import 'features/auth/cubit/auth_state.dart'; import 'features/auth/presentation/phone_auth_screen.dart'; import 'features/membership/cubit/membership_cubit.dart'; import 'features/membership/presentation/digital_card_screen.dart'; import 'features/partners/cubit/partners_cubit.dart'; import 'features/partners/presentation/partners_directory_screen.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); runApp(const UrukPrizeApp()); } class UrukPrizeApp extends StatelessWidget { const UrukPrizeApp({super.key}); @override Widget build(BuildContext context) { return MultiBlocProvider( providers: [ BlocProvider( create: (context) => AuthCubit()..checkExistingSession(), ), BlocProvider( create: (context) => MembershipCubit(), ), BlocProvider( create: (context) => PartnersCubit(), ), ], child: MaterialApp( title: 'جائزة أوروك الدولية', debugShowCheckedModeBanner: false, theme: AppTheme.darkTheme, home: const AppRootGate(), ), ); } } class AppRootGate extends StatelessWidget { const AppRootGate({super.key}); @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is Authenticated) { return const MainNavigationShell(); } if (state is AuthLoading || state is AuthOtpSent) { return const PhoneAuthScreen(); } return const PhoneAuthScreen(); }, ); } } class MainNavigationShell extends StatefulWidget { const MainNavigationShell({super.key}); @override State createState() => _MainNavigationShellState(); } class _MainNavigationShellState extends State { int _currentIndex = 0; final _screens = const [ DigitalCardScreen(), PartnersDirectoryScreen(), _PlaceholderCoursesScreen(), ]; @override Widget build(BuildContext context) { return Directionality( textDirection: TextDirection.rtl, child: Scaffold( body: IndexedStack( index: _currentIndex, children: _screens, ), bottomNavigationBar: NavigationBar( selectedIndex: _currentIndex, backgroundColor: AppTheme.primaryDark, indicatorColor: AppTheme.goldAccent.withOpacity(0.2), onDestinationSelected: (idx) => setState(() => _currentIndex = idx), destinations: const [ NavigationDestination( icon: Icon(Icons.badge_outlined, color: AppTheme.textMuted), selectedIcon: Icon(Icons.badge, color: AppTheme.goldAccent), label: 'الهوية الرقمية', ), NavigationDestination( icon: Icon(Icons.medical_services_outlined, color: AppTheme.textMuted), selectedIcon: Icon(Icons.medical_services, color: AppTheme.goldAccent), label: 'دليل الخصومات', ), NavigationDestination( icon: Icon(Icons.school_outlined, color: AppTheme.textMuted), selectedIcon: Icon(Icons.school, color: AppTheme.goldAccent), label: 'الأكاديمية', ), ], ), ), ); } } class _PlaceholderCoursesScreen extends StatelessWidget { const _PlaceholderCoursesScreen(); @override Widget build(BuildContext context) { return Directionality( textDirection: TextDirection.rtl, child: Scaffold( appBar: AppBar(title: const Text('أكاديمية أوروك (30 تخصصاً)')), body: Center( child: Padding( padding: const EdgeInsets.all(24), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.school, color: AppTheme.goldAccent, size: 70), const SizedBox(height: 16), const Text( 'أكثر من 30 تخصصاً تدريبياً معتمداً', style: TextStyle(color: Colors.white, fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 8), const Text( 'تبدأ الدورات حضورياً في قاعات الفنادق الشريكة وأونلاين عبر منصة البث المباشر لأوروك مع بداية تفعيل العضوية في 1/1 مع شهادات معتمدة رسمياً.', textAlign: TextAlign.center, style: TextStyle(color: AppTheme.textMuted, fontSize: 13), ), ], ), ), ), ), ); } }