import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; // ignore: depend_on_referenced_packages import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:proxibuy/data/models/datasources/offer_data_source.dart'; import 'package:proxibuy/data/repositories/offer_repository.dart'; import 'package:proxibuy/firebase_options.dart'; import 'package:proxibuy/presentation/auth/bloc/auth_bloc.dart'; import 'package:proxibuy/presentation/notification_preferences/bloc/notification_preferences_bloc.dart'; import 'package:proxibuy/presentation/offer/bloc/offer_bloc.dart'; import 'package:proxibuy/presentation/reservation/cubit/reservation_cubit.dart'; import 'package:proxibuy/services/mqtt_service.dart'; import 'core/config/app_colors.dart'; import 'package:proxibuy/presentation/pages/splash_screen.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); Animate.restartOnHotReload = true; runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MultiBlocProvider( providers: [ RepositoryProvider( create: (context) => MqttService(), ), BlocProvider( create: (context) => AuthBloc()..add(CheckAuthStatusEvent()), ), // RepositoryProvider برای OfferRepository حذف شد BlocProvider( create: (context) => ReservationCubit(), ), BlocProvider( create: (context) => OffersBloc(), ), BlocProvider( create: (context) => NotificationPreferencesBloc(), ), ], child: MaterialApp( title: 'Proxibuy', debugShowCheckedModeBanner: false, home: const SplashScreen(), localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [Locale('fa')], locale: const Locale('fa'), theme: ThemeData( fontFamily: 'Dana', scaffoldBackgroundColor: Colors.white, colorScheme: ColorScheme.fromSeed( seedColor: AppColors.primary, primary: AppColors.primary, surface: Colors.white, ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: Colors.white, floatingLabelBehavior: FloatingLabelBehavior.always, contentPadding: const EdgeInsets.symmetric( vertical: 18, horizontal: 20, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: AppColors.border), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: AppColors.border), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: AppColors.primary, width: 2), ), labelStyle: const TextStyle(color: Colors.black), // ignore: deprecated_member_use hintStyle: TextStyle(color: Colors.black.withOpacity(0.8)), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: Colors.black, padding: const EdgeInsets.symmetric(vertical: 16), side: const BorderSide(color: Colors.grey), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50), ), textStyle: const TextStyle( fontFamily: 'Dana', fontSize: 16, color: Colors.black, ), ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: AppColors.button, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(vertical: 16), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50), ), textStyle: const TextStyle( fontFamily: 'Dana', fontSize: 16, fontWeight: FontWeight.bold, ), ), ), ), ), ); } } // class AppRouter extends StatelessWidget { // const AppRouter({super.key}); // @override // Widget build(BuildContext context) { // final authState = context.select((AuthBloc bloc) => bloc.state); // if (authState is AuthCodeSentSuccess) { // return OtpPage( // phoneNumber: "+${authState.countryCode}${authState.phone}", // phone: authState.phone, // countryCode: authState.countryCode, // ); // } // if (authState is AuthLoading) { // final currentState = context.read().state; // if (currentState is! AuthCodeSentSuccess) { // return const Scaffold(body: Center(child: CircularProgressIndicator())); // } // } // if (authState is AuthSuccess) { // return const OffersPage(); // } // if (authState is AuthNeedsInfo) { // return const UserInfoPage(); // } // return const OnboardingPage(); // } // }