Last active
October 25, 2018 07:31
-
-
Save vemarav/46cd59a44954fb43184b7afad25c508a to your computer and use it in GitHub Desktop.
Flutter Navigation Drawer List
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
const String _AccountName = 'Aravind Vemula'; | |
const String _AccountEmail = '[email protected]'; | |
const String _AccountAbbr = 'AV'; | |
void main() => runApp(new Keeper()); | |
class Keeper extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return new MaterialApp( | |
title: 'Keeper', | |
theme: new ThemeData( | |
primaryColor: Colors.yellow.shade700 | |
), | |
home: new KeeperDrawer(), | |
); | |
} | |
} | |
class KeeperDrawer extends StatelessWidget { | |
// refer: https://docs.flutter.io/flutter/widgets/ListView-class.html | |
// refer: https://docs.flutter.io/flutter/widgets/GestureDetector-class.html | |
// refer: https://docs.flutter.io/flutter/material/ListTile-class.html | |
@override | |
Widget build(BuildContext context) { | |
return new Scaffold( | |
drawer: new Drawer( | |
child: new ListView( | |
padding: const EdgeInsets.only(top: 0.0), | |
children: <Widget>[ | |
new UserAccountsDrawerHeader( | |
accountName: const Text(_AccountName), | |
accountEmail: const Text(_AccountEmail), | |
currentAccountPicture: new CircleAvatar( | |
backgroundColor: Colors.brown, | |
child: new Text(_AccountAbbr) | |
), | |
otherAccountsPictures: <Widget>[ | |
new GestureDetector( | |
onTap: () => _onTapOtherAccounts(context), | |
child: new Semantics( | |
label: 'Switch Account', | |
child: new CircleAvatar( | |
backgroundColor: Colors.brown, | |
child: new Text('SA'), | |
), | |
), | |
) | |
] | |
), | |
new ListTile( | |
leading: new Icon(Icons.lightbulb_outline), | |
title: new Text('Notes'), | |
onTap: () => _onListTileTap(context), | |
), | |
new Divider(), | |
new ListTile( | |
leading: new Text('Label'), | |
trailing: new Text('Edit'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.label), | |
title: new Text('Expense'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.label), | |
title: new Text('Inspiration'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.label), | |
title: new Text('Personal'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.label), | |
title: new Text('Work'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.add), | |
title: new Text('Create new label'), | |
onTap: () => _onListTileTap(context), | |
), | |
new Divider(), | |
new ListTile( | |
leading: new Icon(Icons.archive), | |
title: new Text('Archive'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.delete), | |
title: new Text('Trash'), | |
onTap: () => _onListTileTap(context), | |
), | |
new Divider(), | |
new ListTile( | |
leading: new Icon(Icons.settings), | |
title: new Text('Settings'), | |
onTap: () => _onListTileTap(context), | |
), | |
new ListTile( | |
leading: new Icon(Icons.help), | |
title: new Text('Help & feedback'), | |
onTap: () => _onListTileTap(context), | |
) | |
] | |
) | |
), | |
appBar: new AppBar( | |
title: new Text('Keeper'), | |
), | |
body: new Center( | |
child: new Text('Hello World!') | |
) | |
); | |
} | |
_onTapOtherAccounts(BuildContext context) { | |
Navigator.of(context).pop(); | |
showDialog<Null>( | |
context: context, | |
child: new AlertDialog( | |
title: const Text('Account switching not implemented.'), | |
actions: <Widget>[ | |
new FlatButton( | |
child: const Text('OK'), | |
onPressed: () { | |
Navigator.of(context).pop(); | |
}, | |
), | |
], | |
), | |
); | |
} | |
_onListTileTap(BuildContext context) { | |
Navigator.of(context).pop(); | |
showDialog<Null>( | |
context: context, | |
child: new AlertDialog( | |
title: const Text('Not Implemented'), | |
actions: <Widget>[ | |
new FlatButton( | |
child: const Text('OK'), | |
onPressed: () { | |
Navigator.of(context).pop(); | |
}, | |
), | |
], | |
), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment