상태를 가지고 있으며 화면의 상태를 변경할 수 있는 기능을 제공
화면의 상태를 변경할 수 없음
앱 구조를 제공하는 위젯
-AppBar (앱 바): 상단에 위치하며 앱의 제목, 아이콘, 메뉴 버튼 등을 표시할 수 있는 영역
-Body (바디): 중심에 위치하며 앱의 주요 콘텐츠를 표시하는 영역
-FloatingActionButton (플로팅 액션 버튼): 앱의 핵심 작업을 수행하는 버튼으로, 일반적으로 화면의 한쪽 아래에 위치
-BottomNavigationBar (바텀 네비게이션 바): 화면 하단에 탭으로 구성된 네비게이션 바
-Drawer (드로어): 화면의 좌측 또는 우측에서 나타나는 슬라이딩 메뉴
-SnackBar (스낵바): 화면 하단에 일시적인 메시지를 표시하는데 사용
import 'package:flutter/material.dart';
import 'package:flutter_application/main_screen.dart';
import 'package:flutter_application/splash_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '비지니스 카드',
debugShowCheckedModeBanner: false,
initialRoute: '/',
routes: {
'/':(context) => SplashScreen(),
'/main':(context) => MainScreen(),
},
);
}
}
import 'package:flutter/material.dart';
//시작 화면
class SplashScreen extends StatelessWidget {
const SplashScreen({super.key});
@override
Widget build(BuildContext context) {
Future.delayed(Duration(seconds: 3),(){
Navigator.pushReplacementNamed(context, '/main');
},);
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
'assets/user.png',
width: 180,
height: 180,
),
Container(
margin: EdgeInsets.only(top: 32),
child: Text(
'Business Card',
style: TextStyle(
fontSize: 40,
fontWeight: FontWeight.bold,
color: Colors.black,
),
),
)
],
),
),
);
}
}