proxibuy/lib/main.dart

120 lines
4.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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(),
),
);
}
}