mirror of
				https://github.com/inventree/inventree-app.git
				synced 2025-10-30 21:05:42 +00:00 
			
		
		
		
	Move Drawer to separate file
- Now consistent drawer is accessible across all views
This commit is contained in:
		| @@ -1,6 +1,7 @@ | |||||||
| import 'package:InvenTree/inventree/stock.dart'; | import 'package:InvenTree/inventree/stock.dart'; | ||||||
| import 'package:InvenTree/widget/category_display.dart'; | import 'package:InvenTree/widget/category_display.dart'; | ||||||
| import 'package:InvenTree/widget/location_display.dart'; | import 'package:InvenTree/widget/location_display.dart'; | ||||||
|  | import 'package:InvenTree/widget/drawer.dart'; | ||||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| import 'package:shared_preferences/shared_preferences.dart'; | import 'package:shared_preferences/shared_preferences.dart'; | ||||||
| @@ -103,28 +104,6 @@ class _MyHomePageState extends State<MyHomePage> { | |||||||
|  |  | ||||||
|   _MyHomePageState() : super(); |   _MyHomePageState() : super(); | ||||||
|  |  | ||||||
|   void _login() { |  | ||||||
|     Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget())); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void _goHome() { |  | ||||||
|     // Reset the stack, go to "home" |  | ||||||
|     Navigator.pushNamedAndRemoveUntil(context, "/", (r) => false); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void _showParts() { |  | ||||||
|     // Construct a top-level category display (initialize with a null category) |  | ||||||
|     Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null))); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void _scanCode() async { |  | ||||||
|     scanQrCode(context); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   void _showStock() { |  | ||||||
|     Navigator.push(context, MaterialPageRoute(builder: (context) => LocationDisplayWidget(null))); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|     // This method is rerun every time setState is called, for instance as done |     // This method is rerun every time setState is called, for instance as done | ||||||
| @@ -138,46 +117,15 @@ class _MyHomePageState extends State<MyHomePage> { | |||||||
|         // Here we take the value from the MyHomePage object that was created by |         // Here we take the value from the MyHomePage object that was created by | ||||||
|         // the App.build method, and use it to set our appbar title. |         // the App.build method, and use it to set our appbar title. | ||||||
|         title: Text(widget.title), |         title: Text(widget.title), | ||||||
|         /* |         actions: <Widget>[ | ||||||
|         leading: IconButton( |           IconButton( | ||||||
|           icon: Icon(Icons.menu), |             icon: Icon(Icons.search), | ||||||
|           tooltip: "Menu", |             tooltip: 'Search', | ||||||
|             onPressed: null, |             onPressed: null, | ||||||
|         ) |  | ||||||
|         */ |  | ||||||
|       ), |  | ||||||
|       drawer: new Drawer( |  | ||||||
|           child: new ListView( |  | ||||||
|             children: <Widget>[ |  | ||||||
|               new ListTile( |  | ||||||
|                 leading: new Image.asset("assets/image/icon.png", |  | ||||||
|                   fit: BoxFit.scaleDown, |  | ||||||
|                  ), |  | ||||||
|                   title: new Text("InvenTree"), |  | ||||||
|                   onTap: _goHome, |  | ||||||
|               ), |  | ||||||
|               new Divider(), |  | ||||||
|               new ListTile( |  | ||||||
|                 title: new Text("Scan"), |  | ||||||
|                 onTap: _scanCode, |  | ||||||
|               ), |  | ||||||
|               new ListTile( |  | ||||||
|                 title: new Text("Parts"), |  | ||||||
|                 onTap: _showParts, |  | ||||||
|               ), |  | ||||||
|               new ListTile( |  | ||||||
|                 title: new Text("Stock"), |  | ||||||
|                 onTap: _showStock, |  | ||||||
|               ), |  | ||||||
|               new Divider(), |  | ||||||
|               new ListTile( |  | ||||||
|                 title: new Text("Settings"), |  | ||||||
|                 leading: new Icon(Icons.settings), |  | ||||||
|                 onTap: _login, |  | ||||||
|           ), |           ), | ||||||
|         ], |         ], | ||||||
|           ) |  | ||||||
|       ), |       ), | ||||||
|  |       drawer: new InvenTreeDrawer(context), | ||||||
|       body: Center( |       body: Center( | ||||||
|         // Center is a layout widget. It takes a single child and positions it |         // Center is a layout widget. It takes a single child and positions it | ||||||
|         // in the middle of the parent. |         // in the middle of the parent. | ||||||
|   | |||||||
| @@ -1,6 +1,9 @@ | |||||||
|  |  | ||||||
| import 'package:InvenTree/inventree/part.dart'; | import 'package:InvenTree/inventree/part.dart'; | ||||||
|  |  | ||||||
| import 'package:InvenTree/widget/part_display.dart'; | import 'package:InvenTree/widget/part_display.dart'; | ||||||
|  | import 'package:InvenTree/widget/drawer.dart'; | ||||||
|  |  | ||||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||||
| import 'package:flutter/foundation.dart'; | import 'package:flutter/foundation.dart'; | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| @@ -82,6 +85,7 @@ class _CategoryDisplayState extends State<CategoryDisplayWidget> { | |||||||
|       appBar: AppBar( |       appBar: AppBar( | ||||||
|         title: Text(_titleString), |         title: Text(_titleString), | ||||||
|       ), |       ), | ||||||
|  |       drawer: new InvenTreeDrawer(context), | ||||||
|       body: Center( |       body: Center( | ||||||
|         child: Column( |         child: Column( | ||||||
|           mainAxisAlignment: MainAxisAlignment.center, |           mainAxisAlignment: MainAxisAlignment.center, | ||||||
|   | |||||||
							
								
								
									
										111
									
								
								lib/widget/drawer.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								lib/widget/drawer.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | import 'package:InvenTree/barcode.dart'; | ||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  |  | ||||||
|  | import 'package:InvenTree/widget/category_display.dart'; | ||||||
|  | import 'package:InvenTree/widget/location_display.dart'; | ||||||
|  |  | ||||||
|  | import 'package:InvenTree/settings.dart'; | ||||||
|  |  | ||||||
|  | class InvenTreeDrawer extends StatelessWidget { | ||||||
|  |  | ||||||
|  |   final BuildContext context; | ||||||
|  |  | ||||||
|  |   InvenTreeDrawer(this.context); | ||||||
|  |  | ||||||
|  |   void _closeDrawer() { | ||||||
|  |     // Close the drawer | ||||||
|  |     Navigator.of(context).pop(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * Return to the 'home' screen. | ||||||
|  |    * This will empty the navigation stack. | ||||||
|  |    */ | ||||||
|  |   void _home() { | ||||||
|  |     _closeDrawer(); | ||||||
|  |  | ||||||
|  |     Navigator.pushNamedAndRemoveUntil(context, "/", (r) => false); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * Launch the camera to scan a QR code. | ||||||
|  |    * Upon successful scan, data are passed off to be decoded. | ||||||
|  |    */ | ||||||
|  |   void _scan() async { | ||||||
|  |  | ||||||
|  |     _closeDrawer(); | ||||||
|  |     scanQrCode(context); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * Display the top-level PartCategory list | ||||||
|  |    */ | ||||||
|  |   void _showParts() { | ||||||
|  |  | ||||||
|  |     _closeDrawer(); | ||||||
|  |     Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null))); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * Display the top-level StockLocation list | ||||||
|  |    */ | ||||||
|  |   void _showStock() { | ||||||
|  |     _closeDrawer(); | ||||||
|  |     Navigator.push(context, MaterialPageRoute(builder: (context) => LocationDisplayWidget(null))); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * Load settings widget | ||||||
|  |    */ | ||||||
|  |   void _settings() { | ||||||
|  |     _closeDrawer(); | ||||||
|  |     Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget())); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   Widget build(BuildContext context) { | ||||||
|  |     return  Drawer( | ||||||
|  |         child: new ListView( | ||||||
|  |             children: <Widget>[ | ||||||
|  |               new ListTile( | ||||||
|  |                 leading: new Image.asset( | ||||||
|  |                   "assets/image/icon.png", | ||||||
|  |                   fit: BoxFit.scaleDown, | ||||||
|  |                 ), | ||||||
|  |                 title: new Text("InvenTree"), | ||||||
|  |                 onTap: _home, | ||||||
|  |               ), | ||||||
|  |               new Divider(), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Search"), | ||||||
|  |                 leading: new Icon(Icons.search), | ||||||
|  |                 onTap: null, | ||||||
|  |               ), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Scan"), | ||||||
|  |                 onTap: _scan, | ||||||
|  |               ), | ||||||
|  |               new Divider(), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Parts"), | ||||||
|  |                 onTap: _showParts, | ||||||
|  |               ), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Stock"), | ||||||
|  |                 onTap: _showStock, | ||||||
|  |               ), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Suppliers"), | ||||||
|  |                 onTap: null, | ||||||
|  |               ), | ||||||
|  |               new Divider(), | ||||||
|  |               new ListTile( | ||||||
|  |                 title: new Text("Settings"), | ||||||
|  |                 leading: new Icon(Icons.settings), | ||||||
|  |                 onTap: _settings, | ||||||
|  |               ), | ||||||
|  |             ] | ||||||
|  |         ) | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -1,5 +1,6 @@ | |||||||
|  |  | ||||||
| import 'package:InvenTree/inventree/stock.dart'; | import 'package:InvenTree/inventree/stock.dart'; | ||||||
|  | import 'package:InvenTree/widget/drawer.dart'; | ||||||
| import 'package:InvenTree/widget/stock_display.dart'; | import 'package:InvenTree/widget/stock_display.dart'; | ||||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| @@ -88,6 +89,7 @@ class _LocationDisplayState extends State<LocationDisplayWidget> { | |||||||
|       appBar: AppBar( |       appBar: AppBar( | ||||||
|         title: Text(_title), |         title: Text(_title), | ||||||
|       ), |       ), | ||||||
|  |       drawer: new InvenTreeDrawer(context), | ||||||
|       body: Center( |       body: Center( | ||||||
|         child: Column( |         child: Column( | ||||||
|           mainAxisAlignment: MainAxisAlignment.center, |           mainAxisAlignment: MainAxisAlignment.center, | ||||||
|   | |||||||
| @@ -4,6 +4,8 @@ import 'package:flutter/cupertino.dart'; | |||||||
| import 'package:flutter/foundation.dart'; | import 'package:flutter/foundation.dart'; | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
|  |  | ||||||
|  | import 'package:InvenTree/widget/drawer.dart'; | ||||||
|  |  | ||||||
| class PartDisplayWidget extends StatefulWidget { | class PartDisplayWidget extends StatefulWidget { | ||||||
|  |  | ||||||
|   PartDisplayWidget(this.part, {Key key}) : super(key: key); |   PartDisplayWidget(this.part, {Key key}) : super(key: key); | ||||||
| @@ -38,6 +40,7 @@ class _PartDisplayState extends State<PartDisplayWidget> { | |||||||
|       appBar: AppBar( |       appBar: AppBar( | ||||||
|         title: Text(_title), |         title: Text(_title), | ||||||
|       ), |       ), | ||||||
|  |       drawer: new InvenTreeDrawer(context), | ||||||
|       body: Center( |       body: Center( | ||||||
|         child: Column( |         child: Column( | ||||||
|           mainAxisAlignment: MainAxisAlignment.center, |           mainAxisAlignment: MainAxisAlignment.center, | ||||||
|   | |||||||
| @@ -4,6 +4,8 @@ import 'package:InvenTree/inventree/stock.dart'; | |||||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
|  |  | ||||||
|  | import 'package:InvenTree/widget/drawer.dart'; | ||||||
|  |  | ||||||
| class StockItemDisplayWidget extends StatefulWidget { | class StockItemDisplayWidget extends StatefulWidget { | ||||||
|  |  | ||||||
|   StockItemDisplayWidget(this.item, {Key key}) : super(key: key); |   StockItemDisplayWidget(this.item, {Key key}) : super(key: key); | ||||||
| @@ -37,6 +39,7 @@ class _StockItemDisplayState extends State<StockItemDisplayWidget> { | |||||||
|       appBar: AppBar( |       appBar: AppBar( | ||||||
|         title: Text(_title), |         title: Text(_title), | ||||||
|       ), |       ), | ||||||
|  |       drawer: new InvenTreeDrawer(context), | ||||||
|       body: Center( |       body: Center( | ||||||
|         child: Column( |         child: Column( | ||||||
|           mainAxisAlignment: MainAxisAlignment.center, |           mainAxisAlignment: MainAxisAlignment.center, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user