import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:google_fonts/google_fonts.dart'; import 'app_cubit.dart'; import 'router.dart'; class WalkGuideApp extends StatelessWidget { const WalkGuideApp({super.key}); @override Widget build(BuildContext context) { const seed = Color(0xFF1A56DB); return BlocProvider( create: (_) => AppCubit(), child: MaterialApp.router( title: 'WalkGuide', debugShowCheckedModeBanner: false, routerConfig: appRouter, theme: ThemeData( useMaterial3: true, colorScheme: ColorScheme.fromSeed( seedColor: seed, brightness: Brightness.light, ), scaffoldBackgroundColor: const Color(0xFFF4F7FB), textTheme: GoogleFonts.interTextTheme(), pageTransitionsTheme: const PageTransitionsTheme( builders: { TargetPlatform.android: ZoomPageTransitionsBuilder(), TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), TargetPlatform.windows: FadeUpwardsPageTransitionsBuilder(), }, ), appBarTheme: const AppBarTheme( centerTitle: false, backgroundColor: Color(0xFFF4F7FB), foregroundColor: Color(0xFF0F172A), elevation: 0, surfaceTintColor: Colors.transparent, ), navigationBarTheme: NavigationBarThemeData( elevation: 0, height: 76, backgroundColor: Colors.white.withValues(alpha: 0.96), indicatorColor: const Color(0xFFE0E7FF), labelTextStyle: WidgetStateProperty.resolveWith( (states) => TextStyle( fontSize: 12, fontWeight: states.contains(WidgetState.selected) ? FontWeight.w800 : FontWeight.w500, ), ), ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( backgroundColor: seed, foregroundColor: Colors.white, minimumSize: const Size(0, 50), textStyle: const TextStyle(fontWeight: FontWeight.w800), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), ), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( minimumSize: const Size(0, 50), foregroundColor: seed, textStyle: const TextStyle(fontWeight: FontWeight.w800), side: const BorderSide(color: Color(0xFFCBD5E1)), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), ), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: const Color(0xFFF8FAFC), contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), border: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: const BorderSide(color: Color(0xFFE2E8F0)), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: const BorderSide(color: Color(0xFFE2E8F0)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: const BorderSide(color: seed, width: 1.5), ), ), ), ), ); } }