โพ ์์ฑ๋ชจ์ต
์์ ์์ด์ฝ์ ๋ฃ์ด์ ๋ง๋ ๋ฉ๋ด์ ํ๋ฒ๊ฑฐ ๋ฒํผ์ ๋๋ ์ ๋ ์ฌ์ด๋๋ก ์ด๋ฆฌ๋ ๋ฉ๋ด๋ฅผ ๋ง๋ค์์ต๋๋ค! flutter์์๋ drawer์ด๋ผ๋ ๊ฒ์ผ๋ก ์ฝ๊ฒ ๋ง๋ค ์ ๊ฐ ์๋ต๋๋ค!
โพ ๊ธฐ๋ณธ ๊ตฌ์ฑ
drawer ์ ๋ง๋ค๊ณ , ๊ทธ ์์ ์์ ์์ ฏ(child)์ผ๋ก ListView๋ฅผ ๋ง๋ค์ด์ค๋๋ค. ๊ทธ ์์ ์์ ฏ ์์ ๋ ๋ค๋ฅธ ํ์ ์์ ฏ(children)์ ์์ฑํด์ค๋๋ค. ListView๋ ๋๊ฐ์ง๋ก ๊ตฌ์ฑ์ด ๋ฉ๋๋ค. ์ผ๋จ Header๋ถ๋ถ์์ ๊ณ์ ์ด๋ฆ, ํ๋กํ ์ฌ์ง ๋ฑ์ ๋ฃ์ด์ฃผ๊ณ , ๋ค๋ฅธ ํ์ด์ง๋ก ๋์ด๊ฐ ์ ์๋ ๋ฉ๋ด๋ฅผ ListTile์ด๋ผ๋ ์ด๋ฆ ์๋ ์์ฑํด์ค๋๋ค ListTile๊ตฌ์ฑ์ ๋ณด์๋ฉด onTap์ด ์๋๋ฐ, ์ด ๋ถ๋ถ์ ๋์ค์ ๊ฐ๋ฉด ๋ ๊น๊ฒ ๊ณต๋ถํ ์์ ์ด์ง๋ง ๊ฐ๋จํ๊ฒ onPressed์ ๋น๊ตํด๋ณด์๋ฉด onPressed๋ ์ฃผ๋ก ๋ฒํผ์ ์ฌ์ฉ์ด ๋๊ณ onTap์ ์ ์ค์ณ๊ฐ ๋ํด์ง ํด๋ฆญ ๋์์ ํํํ ๋ ์ด๋ค๊ณ ํฉ๋๋ค. ๊ธธ๊ฒ ๋๋ฅธ๋ค๊ฑฐ๋ ๋๋ฒ ํญํ๋ ๊ทธ๋ฐ ๋์! ๐
โพ Code
class Grade extends StatelessWidget {
@override
Widget build(BuildContext context) {
// web ํ๋ฉด๊ตฌ์ฑ์ ์ํด ๋์์ฃผ๋ ๋ํ์ง๊ฐ์ ์์ ์ด๊ฑฐ ํ์์
return Scaffold(
backgroundColor: Colors.amber[800],
appBar: AppBar(
title: Text('MENU'),
centerTitle: true,
backgroundColor: Colors.amber[700],
elevation: 0.0,
actions: <Widget>[
IconButton(
icon: Icon(Icons.shopping_cart),
onPressed: () {
print('shopping cart button is clicked');
},
),
IconButton(
icon: Icon(Icons.search),
//iconbutton action
onPressed: () {
print('search button is clicked');
},
),
],
),
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
UserAccountsDrawerHeader(
currentAccountPicture: CircleAvatar(
backgroundImage: AssetImage('assets/moon.png'),
backgroundColor: Colors.white,
),
otherAccountsPictures: <Widget>[
CircleAvatar(
backgroundImage: AssetImage('assets/redux.png'),
backgroundColor: Colors.white,
),
],
accountName: Text('Moon'),
accountEmail: Text('moon@gmail.com'),
onDetailsPressed: () {
print('open drawer');
},
decoration: BoxDecoration(
color: Colors.red[200],
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(30.0),
bottomRight: Radius.circular(30.0),
)),
),
ListTile(
leading: Icon(Icons.home, color: Colors.grey[850]),
title: Text("Home"),
//gesture
onTap: () {
print('Home is clicked');
},
trailing: Icon(Icons.add),
),
ListTile(
leading: Icon(Icons.settings, color: Colors.grey[850]),
title: Text("Setting"),
//gesture
onTap: () {
print('Setting is clicked');
},
trailing: Icon(Icons.add),
),
ListTile(
leading: Icon(Icons.question_answer, color: Colors.grey[850]),
title: Text("Q&A"),
//gesture
onTap: () {
print('Q&A is clicked');
},
trailing: Icon(Icons.add),
),
],
),
),
);
}
}
โพ leading ์ด ์ผ์ชฝ ๋ฐฐ์น๋ฅผ ์ํ ๊ฒ์ด๋ผ๋ฉด trailing์ ์ค๋ฅธ์ชฝ ๋ฐฐ์น๋ฅผ ์ํ ๊ฒ์ด๋ค
'๊ฐ๋ฐ > Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Flutter] ์๋ก์ด ํ๋ฉด์ผ๋ก ์ด๋ํ๊ณ , ๋๋์๊ฐ๊ธฐ - ํ์ด์ง ์ด๋ (0) | 2022.05.16 |
---|---|
[Flutter] ListView.builder๋ก ๋ฐ๋ณต๋๋ ๋ถ๋ถ ๋ง๋ค๊ธฐ (0) | 2022.04.17 |
[Flutter/ํ๋ฌํฐ] BuildContext ๋? (0) | 2022.04.06 |
[ํ๋ฌํฐ] app bar์ ๋ฉ๋ด ์์ด์ฝ ๋ฃ๊ธฐ (0) | 2022.04.05 |
Flutter์ Widget์ด๋? (0) | 2022.04.02 |