mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +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/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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user