Flutter - #6. Drawer

Pearl Lee·2021년 5월 21일
0

Flutter Widget

목록 보기
6/50

내가 보려고 쓰는 Flutter Widget 일기

출처1 : https://api.flutter.dev/flutter/material/Drawer-class.html
출처2 : https://api.flutter.dev/flutter/material/Scaffold/drawer.html


Drawer

그냥 말그대로 서랍

Scaffold 끝 부분에서 수평으로 꺼낼 수 있는 서랍! 네비게이션 링크를 보여준다. == 화면 전환에 용이

Scaffold.drawer 속성에서 사용된다. drawer 클래스의 자식 요소는 주로 ListView! ListView의 첫번째 자식 요소로는 요건 DrawerHeader가 사용된다. 현재 사용자에 대한 상태 정보를 보여줄 수 있다. 서랍의 나머지 요소들은 ListTile 로 구성된다. 맨 마지막엔 가끔 AboutListTile을 넣어주기도 한다.

Scaffold.drawer에 Drawer를 지정해주면 AppBar 영역에 적절한 아이콘이 알아서 생긴다. 아이콘 따로 만들어줄 필요 없음!


코드 예시로 알아보자

import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  const MyApp({Key key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: _title,
      home: ExpandedWidget(),
    );
  }
}

/// This is the stateless widget that the main application instantiates.
class ExpandedWidget extends StatelessWidget {
  const ExpandedWidget({Key key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Test Drawer'),
      ),
      drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: const <Widget>[
            DrawerHeader(
              decoration: BoxDecoration(
                color: Colors.blue,
              ),
              child: Text(
                'Drawer Header',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 24,
                ),
              ),
            ),
            ListTile(
              leading: Icon(Icons.message),
              title: Text('Messages', style: TextStyle(fontSize: 20),),
            ),
            ListTile(
              leading: Icon(Icons.account_circle),
              title: Text('Profile', style: TextStyle(fontSize: 20),),
            ),
            ListTile(
              leading: Icon(Icons.settings),
              title: Text('Settings', style: TextStyle(fontSize: 20),),
            ),
          ],
        ),
      ),
      endDrawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: const <Widget>[
            DrawerHeader(
              decoration: BoxDecoration(
                color: Colors.blue,
              ),
              child: Text(
                'Drawer Header',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 24,
                ),
              ),
            ),
            ListTile(
              leading: Icon(Icons.message),
              title: Text('Messages', style: TextStyle(fontSize: 20),),
            ),
            ListTile(
              leading: Icon(Icons.account_circle),
              title: Text('Profile', style: TextStyle(fontSize: 20),),
            ),
            ListTile(
              leading: Icon(Icons.settings),
              title: Text('Settings', style: TextStyle(fontSize: 20),),
            ),
          ],
        ),
      ),
    );
  }
}

endDrawer 속성도 똑같은 디자인으로 해줬기 때문에, 앱바 오른쪽 버튼을 누르면 똑같이 나온다. Navigation Link 설정은 Navigation을 배우고 나서 해보도록 할까...

오늘의 일기는 여기까지!

profile
안 되면 되게 하라

0개의 댓글