기본 Flutter 프로젝트 설정 #
- Flutter 프로젝트를 생성하고 필요한 패키지를 추가
1flutter create my_app 2cd my_app
Drawer 추가 #
lib/main.dart파일 수정이제
lib/main.dart파일을 열어 기본적인 UI를 구성한다. 아래의 코드를 추가1import 'package:flutter/material.dart'; 2 3void main() { 4 runApp(MyApp()); 5} 6 7class MyApp extends StatelessWidget { 8 @override 9 Widget build(BuildContext context) { 10 return MaterialApp( 11 title: 'Flutter Drawer Demo', 12 home: HomeScreen(), 13 ); 14 } 15}main() 함수: Flutter 애플리케이션의 진입점이다. runApp() 함수를 호출하여 위젯 트리를 시작한다.
MyApp 클래스: 애플리케이션의 루트 위젯을 정의한다. MaterialApp 위젯을 사용하여 기본적인 Material Design 스타일을 제공한다.
HomeScreen 클래스 추가 #
- 다음으로, HomeScreen 클래스를 추가하여 Drawer를 포함한 화면을 정의
1class HomeScreen extends StatelessWidget { 2 @override 3 Widget build(BuildContext context) { 4 return Scaffold( 5 appBar: AppBar( 6 title: Text('Drawer Example'), 7 ), 8 drawer: Drawer( 9 child: ListView( 10 padding: EdgeInsets.zero, 11 children: <Widget>[ 12 DrawerHeader( 13 child: Text( 14 'Drawer Header', 15 style: TextStyle( 16 color: Colors.white, 17 fontSize: 24, 18 ), 19 ), 20 decoration: BoxDecoration( 21 color: Colors.blue, 22 ), 23 ), 24 ListTile( 25 leading: Icon(Icons.home), 26 title: Text('Home'), 27 onTap: () { 28 Navigator.pop(context); // Drawer 닫기 29 }, 30 ), 31 ListTile( 32 leading: Icon(Icons.settings), 33 title: Text('Settings'), 34 onTap: () { 35 Navigator.pop(context); // Drawer 닫기 36 }, 37 ), 38 ListTile( 39 leading: Icon(Icons.info), 40 title: Text('About'), 41 onTap: () { 42 Navigator.pop(context); // Drawer 닫기 43 }, 44 ), 45 ], 46 ), 47 ), 48 body: Center( 49 child: Text('Home Screen'), 50 ), 51 ); 52 } 53}
Scaffold 구성 요소 설명 #
- Scaffold: Flutter에서 기본적인 레이아웃 구조를 제공하는 위젯이다. appBar, drawer, body 등의 속성을 사용하여 앱의 구조를 설정한다.
- AppBar: 화면 상단에 위치하며, 앱의 제목이나 액션 버튼을 포함할 수 있다. 여기서는 “Drawer Example"이라는 제목을 표시한다.
- Drawer: 왼쪽에서 슬라이드 방식으로 열리는 사이드 메뉴이다. 이 안에 여러 개의 ListTile을 배치하여 메뉴 항목을 나열한다.
- ListView: 스크롤 가능한 리스트를 생성한다. padding: EdgeInsets.zero를 통해 기본 패딩을 제거한다.
- DrawerHeader: 드로어의 헤더 부분으로, 주로 사용자 프로필이나 앱 이름 등을 표시한다. 배경색과 텍스트 스타일을 설정할 수 있다.
- ListTile: 각 메뉴 항목을 구성하는 위젯이다. leading 속성을 사용하여 아이콘을 추가하고, title 속성으로 텍스트를 설정한다. onTap 속성에는 해당 항목을 클릭했을 때 실행될 동작을 정의한다. 여기서는 Drawer를 닫기 위해 Navigator.pop(context)를 사용한다.
실행 #
1코드 복사
2flutter runDrawer 열기 #
- 앱이 실행되면, 화면의 왼쪽 상단에 있는 아이콘을 클릭하면 Drawer가 열린다.
- Drawer 안에는
Home,Settings,About라는 항목이 표시된다. - 각 항목을 클릭하면 Navigator.pop(context)에 의해 Drawer가 닫힌다.
추가 기능 #
- 항목 클릭 시 페이지 전환: 각 ListTile의 onTap에서 페이지를 전환하도록 추가적인 코드를 작성할 수 있다.
- 예를 들어, 새로운 화면으로 이동할 수 있다.
- 상태 관리: 복잡한 앱에서는 Drawer의 상태를 관리하기 위해 상태 관리 라이브러리를 사용할 수 있다.
Advertisement