mirror of
				https://github.com/inventree/inventree-app.git
				synced 2025-11-03 23:05:44 +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/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",
 | 
			
		||||
          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,
 | 
			
		||||
              ),
 | 
			
		||||
            ],
 | 
			
		||||
          )
 | 
			
		||||
        actions: <Widget>[
 | 
			
		||||
          IconButton(
 | 
			
		||||
            icon: Icon(Icons.search),
 | 
			
		||||
            tooltip: 'Search',
 | 
			
		||||
            onPressed: null,
 | 
			
		||||
          ),
 | 
			
		||||
        ],
 | 
			
		||||
      ),
 | 
			
		||||
      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,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user