diff --git a/navigation_drawer/lib/main.dart b/navigation_drawer/lib/main.dart index c5b38ab..53303a5 100644 --- a/navigation_drawer/lib/main.dart +++ b/navigation_drawer/lib/main.dart @@ -1,50 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:navigation_drawer/screens/account.dart'; +import 'package:navigation_drawer/screens/home.dart'; +import 'package:navigation_drawer/screens/settings.dart'; void main() { - runApp(new MaterialApp(home: new MyDrawerApp())); -} - -class MyDrawerApp extends StatelessWidget { - @override - Widget build(BuildContext context) { - var headerChild = new DrawerHeader(child: new Text("Header")); - var aboutChild = new AboutListTile( - child: new Text("About"), - applicationName: "Application Name", - applicationVersion: "v1.0.0", - applicationIcon: new Icon(Icons.adb), - icon: new Icon(Icons.info)); - - var myNavChildren = [ - headerChild, - getNavItem(Icons.settings, "Settings"), - getNavItem(Icons.call, "Call"), - getNavItem(Icons.home, "Home"), - getNavItem(Icons.account_box, "Account"), - aboutChild - ]; - - ListView listView = new ListView(children: myNavChildren); - Drawer myDrawer = new Drawer( - child: listView, - ); - - return new Scaffold( - appBar: new AppBar( - title: new Text("Navigation Drawer Example"), - ), - body: new Container( - child: new Center( - child: new Text("Hello World!"), - )), - drawer: myDrawer, - ); - } - - ListTile getNavItem(var icon, String s) { - return new ListTile( - leading: new Icon(icon), - title: new Text(s), - ); - } + runApp(new MaterialApp( + home: new HomeScreen(), // route for home is '/' implicitly + routes: { + // define the routes + SettingsScreen.routeName: (BuildContext context) => new SettingsScreen(), + AccountScreen.routeName: (BuildContext context) => new AccountScreen(), + }, + )); } diff --git a/navigation_drawer/lib/nav_drawer.dart b/navigation_drawer/lib/nav_drawer.dart new file mode 100644 index 0000000..6cdd800 --- /dev/null +++ b/navigation_drawer/lib/nav_drawer.dart @@ -0,0 +1,9 @@ +import 'package:flutter/material.dart'; +import 'package:navigation_drawer/screens/account.dart'; +import 'package:navigation_drawer/screens/home.dart'; +import 'package:navigation_drawer/screens/settings.dart'; + +class NavDrawer { + + +} diff --git a/navigation_drawer/lib/screens/account.dart b/navigation_drawer/lib/screens/account.dart new file mode 100644 index 0000000..06eaffb --- /dev/null +++ b/navigation_drawer/lib/screens/account.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +class AccountScreen extends StatelessWidget { + static String routeName = "/account"; + + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text("Account"), + ), + body: new Container( + child: new Center( + child: new Text("Account Screen"), + )), + ); + } +} diff --git a/navigation_drawer/lib/screens/home.dart b/navigation_drawer/lib/screens/home.dart new file mode 100644 index 0000000..2b24ab5 --- /dev/null +++ b/navigation_drawer/lib/screens/home.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:navigation_drawer/screens/account.dart'; +import 'package:navigation_drawer/screens/settings.dart'; + +class HomeScreen extends StatefulWidget { + @override + HomeScreenState createState() => new HomeScreenState(); +} + +class HomeScreenState extends State { + Drawer getNavDrawer(BuildContext context) { + var headerChild = new DrawerHeader(child: new Text("Header")); + var aboutChild = new AboutListTile( + child: new Text("About"), + applicationName: "Application Name", + applicationVersion: "v1.0.0", + applicationIcon: new Icon(Icons.adb), + icon: new Icon(Icons.info)); + + ListTile getNavItem(var icon, String s, String routeName) { + return new ListTile( + leading: new Icon(icon), + title: new Text(s), + onTap: () { + setState(() { + // pop closes the drawer + Navigator.of(context).pop(); + // navigate to the route + Navigator.of(context).pushNamed(routeName); + }); + }, + ); + } + + var myNavChildren = [ + headerChild, + getNavItem(Icons.settings, "Settings", SettingsScreen.routeName), + getNavItem(Icons.home, "Home", "/"), + getNavItem(Icons.account_box, "Account", AccountScreen.routeName), + aboutChild + ]; + + ListView listView = new ListView(children: myNavChildren); + + return new Drawer( + child: listView, + ); + } + + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text("Navigation Drawer Example"), + ), + body: new Container( + child: new Center( + child: new Text("Home Screen"), + )), + // Set the nav drawer + drawer: getNavDrawer(context), + ); + } +} diff --git a/navigation_drawer/lib/screens/settings.dart b/navigation_drawer/lib/screens/settings.dart new file mode 100644 index 0000000..b986e2b --- /dev/null +++ b/navigation_drawer/lib/screens/settings.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +class SettingsScreen extends StatelessWidget { + static String routeName = "/settings"; + + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text("Settings"), + ), + body: new Container( + child: new Center( + child: new Text("Settings Screen"), + )), + ); + } +}