128 lines
4.5 KiB
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(),
|
|
},
|
|
);
|
|
}
|
|
}
|