import 'package:business_panel/presentation/auth/bloc/auth_bloc.dart'; import 'package:business_panel/presentation/home/bloc/home_bloc.dart'; import 'package:business_panel/presentation/pages/home_page.dart'; import 'package:business_panel/presentation/pages/onboarding_page.dart'; import 'package:business_panel/presentation/pages/store_info.dart'; import 'package:business_panel/presentation/store_info/bloc/store_info_bloc.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class SplashPage extends StatefulWidget { const SplashPage({super.key}); @override State createState() => _SplashPageState(); } class _SplashPageState extends State { @override void initState() { super.initState(); context.read().add(CheckAuthStatus()); } @override Widget build(BuildContext context) { return BlocListener( listener: (context, state) { if (state is AuthChecked) { if (state.hasToken) { context.read().add(CheckShopStatus()); } else { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const OnboardingPage()), ); } } else if (state is ShopExists) { Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (_) => BlocProvider( // بلافاصله پس از ایجاد، رویداد دریافت تخفیف‌ها را ارسال می‌کند create: (context) => HomeBloc()..add(FetchDiscounts()), child: const HomePage(), ), ), ); } else if (state is AuthOffline) { // کاربر توکن دارد ولی آفلاین است، به HomePage می‌رود // HomePage خودش خطای شبکه را مدیریت خواهد کرد Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (_) => BlocProvider( create: (context) => HomeBloc(), child: const HomePage(), ), ), ); } else if (state is NoShop) { // کاربر توکن دارد ولی فروشگاه نساخته، به صفحه ساخت فروشگاه می‌رود Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (_) => BlocProvider( create: (context) => StoreInfoBloc(), child: const StoreInfoPage(), ), ), ); } else if (state is AuthFailure) { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const OnboardingPage()), ); } }, child: const Scaffold(body: Center(child: CircularProgressIndicator())), ); } }