mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 05:26:47 +00:00
Remove reliance on shared preferences
This commit is contained in:
parent
3ec7ed217e
commit
dba45c7600
2
lib/l10n
2
lib/l10n
@ -1 +1 @@
|
||||
Subproject commit ed3bd59b15b2c69b9a21649a0e0507efd811c1a1
|
||||
Subproject commit 6e095a0d6c7d044a60ccda07d03ae8594d8b4b27
|
@ -1,13 +1,9 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'api.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:sembast/sembast.dart';
|
||||
import 'package:sembast/sembast_io.dart';
|
||||
import 'package:path/path.dart';
|
||||
import 'dart:async';
|
||||
|
||||
|
||||
/*
|
||||
* Class for storing InvenTree preferences in a NoSql DB
|
||||
*/
|
||||
|
@ -7,7 +7,6 @@ import 'package:InvenTree/preferences.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
@ -70,8 +69,6 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
|
||||
|
||||
void _editServerSettings() async {
|
||||
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
|
||||
List<UserProfile> profiles = await UserProfileDBManager().getAllProfiles();
|
||||
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeLoginSettingsWidget()));
|
||||
|
@ -147,8 +147,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
||||
if (category == null) {
|
||||
return Card(
|
||||
child: ListTile(
|
||||
title: Text(I18N.of(context).partCategories),
|
||||
subtitle: Text("Top level part category"),
|
||||
title: Text("Top level part category"),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@ -183,70 +182,84 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
||||
}
|
||||
|
||||
@override
|
||||
Widget getBody(BuildContext context) {
|
||||
return ListView(
|
||||
children: <Widget>[
|
||||
getCategoryDescriptionCard(),
|
||||
ExpansionPanelList(
|
||||
expansionCallback: (int index, bool isExpanded) {
|
||||
setState(() {
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
InvenTreePreferences().expandCategoryList = !isExpanded;
|
||||
break;
|
||||
case 1:
|
||||
InvenTreePreferences().expandPartList = !isExpanded;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
children: <ExpansionPanel> [
|
||||
ExpansionPanel(
|
||||
headerBuilder: (BuildContext context, bool isExpanded) {
|
||||
return ListTile(
|
||||
title: Text(I18N.of(context).subcategories),
|
||||
leading: FaIcon(FontAwesomeIcons.stream),
|
||||
trailing: Text("${_subcategories.length}"),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
InvenTreePreferences().expandCategoryList = !InvenTreePreferences().expandCategoryList;
|
||||
});
|
||||
},
|
||||
onLongPress: () {
|
||||
// TODO - Context menu for e.g. creating a new PartCategory
|
||||
},
|
||||
);
|
||||
},
|
||||
body: SubcategoryList(_subcategories),
|
||||
isExpanded: InvenTreePreferences().expandCategoryList && _subcategories.length > 0,
|
||||
),
|
||||
ExpansionPanel(
|
||||
headerBuilder: (BuildContext context, bool isExpanded) {
|
||||
return ListTile(
|
||||
title: Text(I18N.of(context).parts),
|
||||
leading: FaIcon(FontAwesomeIcons.shapes),
|
||||
trailing: Text("${_parts.length}"),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
InvenTreePreferences().expandPartList = !InvenTreePreferences().expandPartList;
|
||||
});
|
||||
},
|
||||
onLongPress: () {
|
||||
// TODO - Context menu for e.g. creating a new Part
|
||||
},
|
||||
);
|
||||
},
|
||||
body: PartList(_parts),
|
||||
isExpanded: InvenTreePreferences().expandPartList && _parts.length > 0,
|
||||
)
|
||||
],
|
||||
Widget getBottomNavBar(BuildContext context) {
|
||||
return BottomNavigationBar(
|
||||
currentIndex: tabIndex,
|
||||
onTap: onTabSelectionChanged,
|
||||
items: <BottomNavigationBarItem>[
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.sitemap),
|
||||
label: I18N.of(context).details,
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.shapes),
|
||||
label: I18N.of(context).parts,
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.wrench),
|
||||
label: I18N.of(context).actions
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> detailTiles() {
|
||||
return <Widget>[
|
||||
getCategoryDescriptionCard(),
|
||||
Divider(),
|
||||
ListTile(
|
||||
title: Text(
|
||||
I18N.of(context).subcategories,
|
||||
style: TextStyle(fontWeight: FontWeight.bold)
|
||||
)
|
||||
),
|
||||
SubcategoryList(_subcategories),
|
||||
];
|
||||
}
|
||||
|
||||
List<Widget> partTiles() {
|
||||
return <Widget>[
|
||||
getCategoryDescriptionCard(),
|
||||
Divider(),
|
||||
ListTile(
|
||||
title: Text(
|
||||
I18N.of(context).parts,
|
||||
style: TextStyle(fontWeight: FontWeight.bold)
|
||||
)
|
||||
),
|
||||
PartList(_parts)
|
||||
];
|
||||
}
|
||||
|
||||
List<Widget> actionTiles() {
|
||||
|
||||
List<Widget> tiles = [
|
||||
getCategoryDescriptionCard()
|
||||
];
|
||||
|
||||
// TODO - Actions!
|
||||
|
||||
return tiles;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget getBody(BuildContext context) {
|
||||
|
||||
switch (tabIndex) {
|
||||
case 0:
|
||||
return ListView(
|
||||
children: detailTiles()
|
||||
);
|
||||
case 1:
|
||||
return ListView(
|
||||
children: partTiles()
|
||||
);
|
||||
case 2:
|
||||
return ListView(
|
||||
children: actionTiles()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -149,9 +149,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
if (location == null) {
|
||||
return Card(
|
||||
child: ListTile(
|
||||
title: Text(I18N.of(context).stockLocations),
|
||||
subtitle: Text(I18N.of(context).stockTopLevel),
|
||||
leading: FaIcon(FontAwesomeIcons.levelUpAlt),
|
||||
title: Text(I18N.of(context).stockTopLevel),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@ -190,13 +188,17 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
currentIndex: tabIndex,
|
||||
onTap: onTabSelectionChanged,
|
||||
items: <BottomNavigationBarItem> [
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.sitemap),
|
||||
label: I18N.of(context).details,
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.boxes),
|
||||
title: Text(I18N.of(context).stock),
|
||||
label: I18N.of(context).stock,
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: FaIcon(FontAwesomeIcons.wrench),
|
||||
title: Text(I18N.of(context).actions),
|
||||
label: I18N.of(context).actions,
|
||||
)
|
||||
]
|
||||
);
|
||||
@ -208,6 +210,10 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
return ListView(
|
||||
children: detailTiles(),
|
||||
);
|
||||
case 1:
|
||||
return ListView(
|
||||
children: stockTiles(),
|
||||
);
|
||||
case 1:
|
||||
return ListView(
|
||||
children: ListTile.divideTiles(
|
||||
@ -227,73 +233,39 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
|
||||
|
||||
List<Widget> detailTiles() {
|
||||
List<Widget> tiles = [];
|
||||
|
||||
// Location description
|
||||
tiles.add(locationDescriptionCard());
|
||||
|
||||
// Sublocation panel
|
||||
ExpansionPanel sublocations = ExpansionPanel(
|
||||
headerBuilder: (BuildContext context, bool isExpanded) {
|
||||
return ListTile(
|
||||
title: Text("Sublocations"),
|
||||
leading: FaIcon(FontAwesomeIcons.mapMarkerAlt),
|
||||
trailing: Text("${_sublocations.length}"),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
InvenTreePreferences().expandLocationList = !InvenTreePreferences().expandLocationList;
|
||||
});
|
||||
},
|
||||
);
|
||||
},
|
||||
body: SublocationList(_sublocations),
|
||||
isExpanded: InvenTreePreferences().expandLocationList && _sublocations.length > 0,
|
||||
);
|
||||
|
||||
ExpansionPanel subitems = ExpansionPanel(
|
||||
headerBuilder: (BuildContext context, bool isExpanded) {
|
||||
return ListTile(
|
||||
title: Text("Stock Items"),
|
||||
leading: FaIcon(FontAwesomeIcons.boxes),
|
||||
trailing: Text("${_items.length}"),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
InvenTreePreferences().expandStockList = !InvenTreePreferences().expandStockList;
|
||||
});
|
||||
},
|
||||
);
|
||||
},
|
||||
body: StockList(_items),
|
||||
isExpanded: InvenTreePreferences().expandStockList && _items.length > 0,
|
||||
);
|
||||
|
||||
// Sublocations and items
|
||||
tiles.add(
|
||||
ExpansionPanelList(
|
||||
expansionCallback: (int index, bool isExpanded) {
|
||||
setState(() {
|
||||
switch (index) {
|
||||
case 0:
|
||||
InvenTreePreferences().expandLocationList = !isExpanded;
|
||||
break;
|
||||
case 1:
|
||||
InvenTreePreferences().expandStockList = !isExpanded;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
children: <ExpansionPanel> [
|
||||
sublocations,
|
||||
subitems,
|
||||
]
|
||||
)
|
||||
);
|
||||
List<Widget> tiles = [
|
||||
locationDescriptionCard(),
|
||||
Divider(),
|
||||
ListTile(
|
||||
title: Text(
|
||||
I18N.of(context).sublocations,
|
||||
style: TextStyle(fontWeight: FontWeight.bold)
|
||||
),
|
||||
),
|
||||
SublocationList(_sublocations)
|
||||
];
|
||||
|
||||
return tiles;
|
||||
}
|
||||
|
||||
|
||||
List<Widget> stockTiles() {
|
||||
List<Widget> tiles = [
|
||||
locationDescriptionCard(),
|
||||
Divider(),
|
||||
ListTile(
|
||||
title: Text(
|
||||
I18N.of(context).stockItems,
|
||||
style: TextStyle(fontWeight: FontWeight.bold)
|
||||
)
|
||||
),
|
||||
StockList(_items),
|
||||
];
|
||||
|
||||
return tiles;
|
||||
}
|
||||
|
||||
|
||||
List<Widget> actionTiles() {
|
||||
List<Widget> tiles = [];
|
||||
|
||||
|
@ -27,8 +27,6 @@ dependencies:
|
||||
|
||||
cupertino_icons: ^0.1.3
|
||||
http: ^0.12.1
|
||||
shared_preferences: ^0.5.7
|
||||
|
||||
cached_network_image: ^2.5.0
|
||||
qr_code_scanner: ^0.0.13
|
||||
package_info: ^0.4.0 # App information introspection
|
||||
|
Loading…
x
Reference in New Issue
Block a user