2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 05:26:47 +00:00

Refactor "home" screen

- Add serttings button
- Simplify server connection display
This commit is contained in:
Oliver 2021-09-28 23:06:35 +10:00
parent be36811cb3
commit c868e36eb9
2 changed files with 120 additions and 222 deletions

View File

@ -1,6 +1,5 @@
import "package:inventree/api.dart";
import "package:inventree/barcode.dart";
import "package:inventree/widget/company_list.dart";
import "package:inventree/widget/search.dart";
import "package:flutter/material.dart";
import "package:inventree/l10.dart";
@ -76,6 +75,7 @@ class InvenTreeDrawer extends StatelessWidget {
Navigator.push(context, MaterialPageRoute(builder: (context) => LocationDisplayWidget(null)));
}
/*
void _showSuppliers() {
if (!InvenTreeAPI().checkConnection(context)) return;
_closeDrawer();
@ -96,6 +96,7 @@ class InvenTreeDrawer extends StatelessWidget {
Navigator.push(context, MaterialPageRoute(builder: (context) => CompanyListWidget(L10().customers, {"is_customer": "true"})));
}
*/
/*
* Load settings widget

View File

@ -1,4 +1,5 @@
import "package:inventree/app_colors.dart";
import "package:inventree/settings/settings.dart";
import "package:inventree/user_profile.dart";
import "package:flutter/cupertino.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/location_display.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/spinner.dart";
import "package:inventree/widget/drawer.dart";
class InvenTreeHomePage extends StatefulWidget {
@ -42,22 +41,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
// Selected user profile
UserProfile? _profile;
void _searchParts() {
if (!InvenTreeAPI().checkConnection(context)) return;
showSearch(
context: context,
delegate: PartSearchDelegate(context)
);
}
void _searchStock() {
if (!InvenTreeAPI().checkConnection(context)) return;
showSearch(
context: context,
delegate: StockSearchDelegate(context)
);
void _search(BuildContext context) {
// TODO
}
void _scan(BuildContext context) {
@ -72,12 +57,18 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(null)));
}
void _showSettings(BuildContext context) {
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSettingsWidget()));
}
/*
void _showStarredParts(BuildContext context) {
if (!InvenTreeAPI().checkConnection(context)) return;
// TODO
// Navigator.push(context, MaterialPageRoute(builder: (context) => StarredPartWidget()));
}
*/
void _showStock(BuildContext context) {
if (!InvenTreeAPI().checkConnection(context)) return;
@ -143,67 +134,6 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
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 = ""}) {
@ -230,6 +160,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
),
Divider(
height: 10,
thickness: 0,
),
Text(
label,
@ -257,25 +188,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
);
}
@override
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: [
List<Widget> getGridTiles(BuildContext context) {
return [
_iconButton(
context,
L10().scanBarcode,
@ -289,7 +203,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
L10().search,
FontAwesomeIcons.search,
callback: () {
// TODO: Launch "generic" search widget
_search(context);
}
),
_iconButton(
@ -361,62 +275,45 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
_showCustomers(context);
}
),
/*
Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Column(
children: <Widget>[
_iconButton(
context,
L10().settings,
FontAwesomeIcons.cogs,
callback: () {
_showSettings(context);
}
)
];
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _homeKey,
appBar: AppBar(
title: Text(L10().appTitle),
actions: [
IconButton(
icon: new FaIcon(FontAwesomeIcons.tools),
tooltip: "Build",
onPressed: _unsupported,
icon: FaIcon(
FontAwesomeIcons.server,
color: InvenTreeAPI().isConnected() ? COLOR_SUCCESS : COLOR_DANGER,
),
Text("Build"),
],
),
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"),
]
onPressed: _selectProfile,
)
],
),
Spacer(),
*/
/*
Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: _serverTile(),
drawer: InvenTreeDrawer(context),
body: ListView(
children: [
GridView.extent(
maxCrossAxisExtent: 140,
shrinkWrap: true,
physics: ClampingScrollPhysics(),
children: getGridTiles(context),
),
],
),
]),
*/
],
)
]
),
);
}
}