2
0
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:
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/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

View File

@ -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(),
), ),
], ],
), ),
]),
*/
],
)
]
),
); );
} }
} }