2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-12 02:05:29 +00:00

Remove reliance on shared preferences

This commit is contained in:
Oliver Walters
2021-02-11 00:53:52 +11:00
parent 3ec7ed217e
commit dba45c7600
6 changed files with 116 additions and 140 deletions

View File

@ -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()
);
}
}
}

View File

@ -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 = [];