MIF_E31231623/android/wisata_app/lib/main.dart

128 lines
4.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'screens/ar_view_screen.dart';
import 'screens/beranda_screen.dart';
import 'screens/dashboard_screen.dart';
import 'screens/detail_destination_screen.dart';
import 'screens/forgot_password_screen.dart';
import 'screens/home_screen.dart';
import 'screens/login_screen.dart';
import 'screens/register_screen.dart';
import 'screens/reset_password_screen.dart';
import 'screens/splash_screen.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const ExploreLumajangApp());
}
class ExploreLumajangApp extends StatelessWidget {
const ExploreLumajangApp({super.key});
@override
Widget build(BuildContext context) {
const seed = Color(0xFF0F4C81);
final baseScheme = ColorScheme.fromSeed(
seedColor: seed,
brightness: Brightness.light,
);
return MaterialApp(
title: 'Explore Lumajang',
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
textTheme: GoogleFonts.interTextTheme(),
colorScheme: baseScheme.copyWith(
primary: seed,
secondary: const Color(0xFF14B8C4),
tertiary: const Color(0xFFF59E0B),
surface: const Color(0xFFFFFFFF),
surfaceContainerHighest: const Color(0xFFEAF3F8),
),
scaffoldBackgroundColor: const Color(0xFFF4F8FB),
appBarTheme: const AppBarTheme(
centerTitle: false,
surfaceTintColor: Colors.transparent,
backgroundColor: Color(0xFFF4F8FB),
foregroundColor: Color(0xFF0F172A),
elevation: 0,
),
snackBarTheme: SnackBarThemeData(
behavior: SnackBarBehavior.floating,
backgroundColor: const Color(0xFF0F172A),
contentTextStyle: GoogleFonts.inter(
color: Colors.white,
fontWeight: FontWeight.w700,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18),
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: Colors.white,
contentPadding:
const EdgeInsets.symmetric(horizontal: 18, vertical: 18),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
borderSide: BorderSide.none,
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
borderSide: BorderSide(
color: const Color(0xFFE2E8F0).withValues(alpha: 0.95),
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
borderSide: const BorderSide(color: seed, width: 1.6),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
borderSide: const BorderSide(color: Color(0xFFDC2626)),
),
),
filledButtonTheme: FilledButtonThemeData(
style: FilledButton.styleFrom(
backgroundColor: seed,
foregroundColor: Colors.white,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
),
),
navigationBarTheme: NavigationBarThemeData(
backgroundColor: Colors.white,
indicatorColor: const Color(0xFFD9EEF8),
elevation: 0,
labelTextStyle: WidgetStateProperty.resolveWith(
(states) => TextStyle(
fontSize: 12,
fontWeight: states.contains(WidgetState.selected)
? FontWeight.w800
: FontWeight.w600,
),
),
),
),
initialRoute: SplashScreen.routeName,
routes: {
SplashScreen.routeName: (_) => const SplashScreen(),
LoginScreen.routeName: (_) => const LoginScreen(),
RegisterScreen.routeName: (_) => const RegisterScreen(),
ForgotPasswordScreen.routeName: (_) => const ForgotPasswordScreen(),
ResetPasswordScreen.routeName: (_) => const ResetPasswordScreen(),
DashboardScreen.routeName: (_) => const DashboardScreen(),
HomeScreen.routeName: (_) => const HomeScreen(),
BerandaScreen.routeName: (_) => const BerandaScreen(),
DetailDestinationScreen.routeName: (_) =>
const DetailDestinationScreen(),
ArViewScreen.routeName: (_) => const ArViewScreen(),
},
);
}
}