mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 05:26:47 +00:00
Move Drawer to separate file
- Now consistent drawer is accessible across all views
This commit is contained in:
parent
aa865eea1b
commit
6d3db243c3
@ -1,6 +1,7 @@
|
||||
import 'package:InvenTree/inventree/stock.dart';
|
||||
import 'package:InvenTree/widget/category_display.dart';
|
||||
import 'package:InvenTree/widget/location_display.dart';
|
||||
import 'package:InvenTree/widget/drawer.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
@ -103,28 +104,6 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
|
||||
_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
|
||||
Widget build(BuildContext context) {
|
||||
// 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
|
||||
// the App.build method, and use it to set our appbar title.
|
||||
title: Text(widget.title),
|
||||
/*
|
||||
leading: IconButton(
|
||||
icon: Icon(Icons.menu),
|
||||
tooltip: "Menu",
|
||||
actions: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(Icons.search),
|
||||
tooltip: 'Search',
|
||||
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(
|
||||
// Center is a layout widget. It takes a single child and positions it
|
||||
// in the middle of the parent.
|
||||
|
@ -1,6 +1,9 @@
|
||||
|
||||
import 'package:InvenTree/inventree/part.dart';
|
||||
|
||||
import 'package:InvenTree/widget/part_display.dart';
|
||||
import 'package:InvenTree/widget/drawer.dart';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -82,6 +85,7 @@ class _CategoryDisplayState extends State<CategoryDisplayWidget> {
|
||||
appBar: AppBar(
|
||||
title: Text(_titleString),
|
||||
),
|
||||
drawer: new InvenTreeDrawer(context),
|
||||
body: Center(
|
||||
child: Column(
|
||||
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/widget/drawer.dart';
|
||||
import 'package:InvenTree/widget/stock_display.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -88,6 +89,7 @@ class _LocationDisplayState extends State<LocationDisplayWidget> {
|
||||
appBar: AppBar(
|
||||
title: Text(_title),
|
||||
),
|
||||
drawer: new InvenTreeDrawer(context),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
@ -4,6 +4,8 @@ import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:InvenTree/widget/drawer.dart';
|
||||
|
||||
class PartDisplayWidget extends StatefulWidget {
|
||||
|
||||
PartDisplayWidget(this.part, {Key key}) : super(key: key);
|
||||
@ -38,6 +40,7 @@ class _PartDisplayState extends State<PartDisplayWidget> {
|
||||
appBar: AppBar(
|
||||
title: Text(_title),
|
||||
),
|
||||
drawer: new InvenTreeDrawer(context),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
@ -4,6 +4,8 @@ import 'package:InvenTree/inventree/stock.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:InvenTree/widget/drawer.dart';
|
||||
|
||||
class StockItemDisplayWidget extends StatefulWidget {
|
||||
|
||||
StockItemDisplayWidget(this.item, {Key key}) : super(key: key);
|
||||
@ -37,6 +39,7 @@ class _StockItemDisplayState extends State<StockItemDisplayWidget> {
|
||||
appBar: AppBar(
|
||||
title: Text(_title),
|
||||
),
|
||||
drawer: new InvenTreeDrawer(context),
|
||||
body: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
Loading…
x
Reference in New Issue
Block a user