import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:smarthelmet_app/home_screen_content.dart'; import 'package:smarthelmet_app/control_screen.dart'; import 'package:smarthelmet_app/history_screen.dart'; import 'package:smarthelmet_app/rent_return_screen.dart'; import 'package:smarthelmet_app/settings_screen.dart'; import 'package:smarthelmet_app/login_screen.dart'; final Color _mainBlueColor = const Color(0xFF002FA7); final Color _mainTextColor = const Color(0xFF1C1C1E); final Color _subTextColor = const Color(0xFF6A717B); final Color _pageBackgroundColor = const Color(0xFFF5F7F9); final Color _cardBackgroundColor = Colors.white; void main() { runApp(const SmartHelmetApp()); } class SmartHelmetApp extends StatelessWidget { const SmartHelmetApp({super.key}); @override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( statusBarColor: Colors.transparent, statusBarIconBrightness: Brightness.dark, )); return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( brightness: Brightness.light, scaffoldBackgroundColor: _pageBackgroundColor, primaryColor: _mainBlueColor, fontFamily: 'Pretendard', textTheme: TextTheme( bodyLarge: TextStyle(color: _mainTextColor, fontWeight: FontWeight.w500), bodyMedium: TextStyle(color: _subTextColor, fontWeight: FontWeight.w400), ), ), home: const LoginScreen(), ); } } class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State createState() => _HomeScreenState(); } class _HomeScreenState extends State { int _selectedIndex = 0; final List _screens = [ const HomeScreenContent(), const HistoryScreen(), const ControlScreen(), const RentReturnScreen(), const SettingsScreen(), ]; @override Widget build(BuildContext context) { return MediaQuery( data: MediaQuery.of(context).copyWith( textScaler: const TextScaler.linear(1.0), ), child: Scaffold( body: SafeArea( bottom: false, child: Column( children: [ Expanded( child: _screens[_selectedIndex], ), ], ), ), bottomNavigationBar: BottomNavigationBar( currentIndex: _selectedIndex, onTap: (index) { setState(() { _selectedIndex = index; }); }, type: BottomNavigationBarType.fixed, backgroundColor: _mainBlueColor, elevation: 0, selectedItemColor: Colors.white, unselectedItemColor: Colors.white70, showUnselectedLabels: true, selectedFontSize: 12, unselectedFontSize: 12, selectedLabelStyle: const TextStyle(fontWeight: FontWeight.bold, height: 1.5), unselectedLabelStyle: const TextStyle(fontWeight: FontWeight.bold, height: 1.5), iconSize: 22, items: const [ BottomNavigationBarItem( icon: Padding(padding: EdgeInsets.only(bottom: 2.0), child: Icon(Icons.home)), label: '홈', ), BottomNavigationBarItem( icon: Padding(padding: EdgeInsets.only(bottom: 2.0), child: Icon(Icons.history)), label: '기록', ), BottomNavigationBarItem( icon: Padding(padding: EdgeInsets.only(bottom: 2.0), child: Icon(Icons.settings_input_component)), label: '제어', ), BottomNavigationBarItem( icon: Padding(padding: EdgeInsets.only(bottom: 2.0), child: Icon(Icons.assignment_return_outlined)), label: '대여 / 반납', ), BottomNavigationBarItem( icon: Padding(padding: EdgeInsets.only(bottom: 2.0), child: Icon(Icons.settings)), label: '설정', ), ], ), ), ); } }