mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +00:00
Refactor "home" screen
- Add serttings button - Simplify server connection display
This commit is contained in:
parent
be36811cb3
commit
c868e36eb9
@ -1,6 +1,5 @@
|
|||||||
import "package:inventree/api.dart";
|
import "package:inventree/api.dart";
|
||||||
import "package:inventree/barcode.dart";
|
import "package:inventree/barcode.dart";
|
||||||
import "package:inventree/widget/company_list.dart";
|
|
||||||
import "package:inventree/widget/search.dart";
|
import "package:inventree/widget/search.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
@ -76,6 +75,7 @@ class InvenTreeDrawer extends StatelessWidget {
|
|||||||
Navigator.push(context, MaterialPageRoute(builder: (context) => LocationDisplayWidget(null)));
|
Navigator.push(context, MaterialPageRoute(builder: (context) => LocationDisplayWidget(null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void _showSuppliers() {
|
void _showSuppliers() {
|
||||||
if (!InvenTreeAPI().checkConnection(context)) return;
|
if (!InvenTreeAPI().checkConnection(context)) return;
|
||||||
_closeDrawer();
|
_closeDrawer();
|
||||||
@ -96,6 +96,7 @@ class InvenTreeDrawer extends StatelessWidget {
|
|||||||
|
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (context) => CompanyListWidget(L10().customers, {"is_customer": "true"})));
|
Navigator.push(context, MaterialPageRoute(builder: (context) => CompanyListWidget(L10().customers, {"is_customer": "true"})));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Load settings widget
|
* Load settings widget
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import "package:inventree/app_colors.dart";
|
import "package:inventree/app_colors.dart";
|
||||||
|
import "package:inventree/settings/settings.dart";
|
||||||
import "package:inventree/user_profile.dart";
|
import "package:inventree/user_profile.dart";
|
||||||
import "package:flutter/cupertino.dart";
|
import "package:flutter/cupertino.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
@ -16,9 +17,7 @@ import "package:inventree/widget/category_display.dart";
|
|||||||
import "package:inventree/widget/company_list.dart";
|
import "package:inventree/widget/company_list.dart";
|
||||||
import "package:inventree/widget/location_display.dart";
|
import "package:inventree/widget/location_display.dart";
|
||||||
import "package:inventree/widget/purchase_order_list.dart";
|
import "package:inventree/widget/purchase_order_list.dart";
|
||||||
import "package:inventree/widget/search.dart";
|
|
||||||
import "package:inventree/widget/snacks.dart";
|
import "package:inventree/widget/snacks.dart";
|
||||||
import "package:inventree/widget/spinner.dart";
|
|
||||||
import "package:inventree/widget/drawer.dart";
|
import "package:inventree/widget/drawer.dart";
|
||||||
|
|
||||||
class InvenTreeHomePage extends StatefulWidget {
|
class InvenTreeHomePage extends StatefulWidget {
|
||||||
@ -42,22 +41,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
// Selected user profile
|
// Selected user profile
|
||||||
UserProfile? _profile;
|
UserProfile? _profile;
|
||||||
|
|
||||||
void _searchParts() {
|
void _search(BuildContext context) {
|
||||||
if (!InvenTreeAPI().checkConnection(context)) return;
|
// TODO
|
||||||
|
|
||||||
showSearch(
|
|
||||||
context: context,
|
|
||||||
delegate: PartSearchDelegate(context)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _searchStock() {
|
|
||||||
if (!InvenTreeAPI().checkConnection(context)) return;
|
|
||||||
|
|
||||||
showSearch(
|
|
||||||
context: context,
|
|
||||||
delegate: StockSearchDelegate(context)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _scan(BuildContext context) {
|
void _scan(BuildContext context) {
|
||||||
@ -72,12 +57,18 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null)));
|
Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _showSettings(BuildContext context) {
|
||||||
|
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void _showStarredParts(BuildContext context) {
|
void _showStarredParts(BuildContext context) {
|
||||||
if (!InvenTreeAPI().checkConnection(context)) return;
|
if (!InvenTreeAPI().checkConnection(context)) return;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
// Navigator.push(context, MaterialPageRoute(builder: (context) => StarredPartWidget()));
|
// Navigator.push(context, MaterialPageRoute(builder: (context) => StarredPartWidget()));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void _showStock(BuildContext context) {
|
void _showStock(BuildContext context) {
|
||||||
if (!InvenTreeAPI().checkConnection(context)) return;
|
if (!InvenTreeAPI().checkConnection(context)) return;
|
||||||
@ -143,67 +134,6 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
setState(() {});
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
ListTile _serverTile() {
|
|
||||||
|
|
||||||
// No profile selected
|
|
||||||
// Tap to select / create a profile
|
|
||||||
if (_profile == null) {
|
|
||||||
return ListTile(
|
|
||||||
title: Text(L10().profileNotSelected),
|
|
||||||
subtitle: Text(L10().profileTapToCreate),
|
|
||||||
leading: FaIcon(FontAwesomeIcons.server),
|
|
||||||
trailing: FaIcon(
|
|
||||||
FontAwesomeIcons.user,
|
|
||||||
color: COLOR_DANGER,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
_selectProfile();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Profile is selected ...
|
|
||||||
if (InvenTreeAPI().isConnecting()) {
|
|
||||||
return ListTile(
|
|
||||||
title: Text(L10().serverConnecting),
|
|
||||||
subtitle: Text("${InvenTreeAPI().baseUrl}"),
|
|
||||||
leading: FaIcon(FontAwesomeIcons.server),
|
|
||||||
trailing: Spinner(
|
|
||||||
icon: FontAwesomeIcons.spinner,
|
|
||||||
color: COLOR_PROGRESS,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
_selectProfile();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else if (InvenTreeAPI().isConnected()) {
|
|
||||||
return ListTile(
|
|
||||||
title: Text(L10().serverConnected),
|
|
||||||
subtitle: Text("${InvenTreeAPI().baseUrl}"),
|
|
||||||
leading: FaIcon(FontAwesomeIcons.server),
|
|
||||||
trailing: FaIcon(
|
|
||||||
FontAwesomeIcons.checkCircle,
|
|
||||||
color: COLOR_SUCCESS
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
_selectProfile();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return ListTile(
|
|
||||||
title: Text(L10().serverCouldNotConnect),
|
|
||||||
subtitle: Text("${_profile!.server}"),
|
|
||||||
leading: FaIcon(FontAwesomeIcons.server),
|
|
||||||
trailing: FaIcon(
|
|
||||||
FontAwesomeIcons.timesCircle,
|
|
||||||
color: COLOR_DANGER,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
_selectProfile();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _iconButton(BuildContext context, String label, IconData icon, {Function()? callback, String role = "", String permission = ""}) {
|
Widget _iconButton(BuildContext context, String label, IconData icon, {Function()? callback, String role = "", String permission = ""}) {
|
||||||
|
|
||||||
@ -230,6 +160,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
height: 10,
|
height: 10,
|
||||||
|
thickness: 0,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
label,
|
label,
|
||||||
@ -257,25 +188,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Widget> getGridTiles(BuildContext context) {
|
||||||
@override
|
return [
|
||||||
Widget build(BuildContext context) {
|
|
||||||
|
|
||||||
return Scaffold(
|
|
||||||
key: _homeKey,
|
|
||||||
appBar: AppBar(
|
|
||||||
title: Text(L10().appTitle),
|
|
||||||
),
|
|
||||||
drawer: InvenTreeDrawer(context),
|
|
||||||
body: ListView(
|
|
||||||
physics: ClampingScrollPhysics(),
|
|
||||||
shrinkWrap: true,
|
|
||||||
children: [
|
|
||||||
GridView.extent(
|
|
||||||
maxCrossAxisExtent: 140,
|
|
||||||
shrinkWrap: true,
|
|
||||||
physics: ClampingScrollPhysics(),
|
|
||||||
children: [
|
|
||||||
_iconButton(
|
_iconButton(
|
||||||
context,
|
context,
|
||||||
L10().scanBarcode,
|
L10().scanBarcode,
|
||||||
@ -289,7 +203,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
L10().search,
|
L10().search,
|
||||||
FontAwesomeIcons.search,
|
FontAwesomeIcons.search,
|
||||||
callback: () {
|
callback: () {
|
||||||
// TODO: Launch "generic" search widget
|
_search(context);
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
_iconButton(
|
_iconButton(
|
||||||
@ -361,62 +275,45 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
|
|||||||
_showCustomers(context);
|
_showCustomers(context);
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
/*
|
_iconButton(
|
||||||
Spacer(),
|
context,
|
||||||
Row(
|
L10().settings,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
FontAwesomeIcons.cogs,
|
||||||
children: <Widget>[
|
callback: () {
|
||||||
Column(
|
_showSettings(context);
|
||||||
children: <Widget>[
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
key: _homeKey,
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text(L10().appTitle),
|
||||||
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: new FaIcon(FontAwesomeIcons.tools),
|
icon: FaIcon(
|
||||||
tooltip: "Build",
|
FontAwesomeIcons.server,
|
||||||
onPressed: _unsupported,
|
color: InvenTreeAPI().isConnected() ? COLOR_SUCCESS : COLOR_DANGER,
|
||||||
),
|
),
|
||||||
Text("Build"),
|
onPressed: _selectProfile,
|
||||||
],
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: <Widget>[
|
|
||||||
IconButton(
|
|
||||||
icon: new FaIcon(FontAwesomeIcons.shoppingCart),
|
|
||||||
tooltip: "Order",
|
|
||||||
onPressed: _unsupported,
|
|
||||||
),
|
|
||||||
Text("Order"),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
children: <Widget>[
|
|
||||||
IconButton(
|
|
||||||
icon: new FaIcon(FontAwesomeIcons.truck),
|
|
||||||
tooltip: "Ship",
|
|
||||||
onPressed: _unsupported,
|
|
||||||
),
|
|
||||||
Text("Ship"),
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Spacer(),
|
drawer: InvenTreeDrawer(context),
|
||||||
*/
|
body: ListView(
|
||||||
/*
|
children: [
|
||||||
Spacer(),
|
GridView.extent(
|
||||||
Row(
|
maxCrossAxisExtent: 140,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
shrinkWrap: true,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
physics: ClampingScrollPhysics(),
|
||||||
children: <Widget>[
|
children: getGridTiles(context),
|
||||||
Expanded(
|
|
||||||
child: _serverTile(),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]),
|
|
||||||
*/
|
|
||||||
],
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user