// lib/main.dart import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:proxibuy/data/models/datasources/offer_data_source.dart'; import 'package:proxibuy/presentation/auth/bloc/auth_bloc.dart'; import 'package:proxibuy/presentation/offer/bloc/offer_bloc.dart'; import 'core/config/app_colors.dart'; // از کلاس رنگ خودمان استفاده می‌کنیم import 'presentation/pages/onboarding_page.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { // استفاده از MultiBlocProvider برای ارائه تمام BLoC ها return MultiBlocProvider( providers: [ BlocProvider( create: (context) => OfferBloc(dataSource: MockOfferDataSource()), ), BlocProvider( create: (context) => AuthBloc(), ), ], child: MaterialApp( title: 'تخفیف یاب', // نام اپ debugShowCheckedModeBanner: false, // ===== تنظیمات زبان فارسی و راست‌چین ===== 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: ColorScheme.fromSeed( seedColor: AppColors.primary, // رنگ اصلی شما primary: AppColors.primary, // background: AppColors., surface: Colors.white, ), // ۲. تعریف تم برای ویجت‌های خاص appBarTheme: const AppBarTheme( backgroundColor: AppColors.primary, foregroundColor: Colors.grey, // رنگ آیکون و متن روی AppBar elevation: 0, ), 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), hintStyle: TextStyle(color: Colors.black.withOpacity(0.8)), ), outlinedButtonTheme: OutlinedButtonThemeData( // <--- تم دکمه گوگل style: OutlinedButton.styleFrom( foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(vertical: 16), side: const BorderSide(color: AppColors.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, ), ), ), ), home: const OnboardingPage(), ), ); } }