2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00

Part detail view is now refreshabel

- lso add a progress dialog when reloading a model object
This commit is contained in:
Oliver Walters 2020-04-15 12:00:26 +10:00
parent 9b14483273
commit 578d54367a
3 changed files with 38 additions and 19 deletions

View File

@ -89,9 +89,30 @@ class InvenTreeModel {
/*
* Reload this object, by requesting data from the server
*/
Future<bool> reload() async {
Future<bool> reload(BuildContext context) async {
var response = await api.get(url, params: defaultGetFilters());
showProgressDialog(context, "Refreshing data", "Refreshing data for ${NAME}");
var response = await api.get(url, params: defaultGetFilters())
.timeout(Duration(seconds: 10))
.catchError((e) {
hideProgressDialog(context);
if (e is TimeoutException) {
showErrorDialog(context, "Timeout", "No response from server");
} else {
showErrorDialog(context, "Error", e.toString());
}
return null;
});
if (response == null) {
return false;
}
hideProgressDialog(context);
if (response.statusCode != 200) {
print("Error retrieving data");

View File

@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:InvenTree/api.dart';
import 'package:InvenTree/widget/refreshable_state.dart';
import 'package:InvenTree/widget/drawer.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -21,7 +22,10 @@ class PartDetailWidget extends StatefulWidget {
}
class _PartDisplayState extends State<PartDetailWidget> {
class _PartDisplayState extends RefreshableState<PartDetailWidget> {
@override
String app_bar_title = "Part";
_PartDisplayState(this.part) {
// TODO
@ -29,6 +33,11 @@ class _PartDisplayState extends State<PartDetailWidget> {
InvenTreePart part;
@override
Future<void> request(BuildContext context) async {
await part.reload(context);
}
/*
* Build a list of tiles to display under the part description
*/
@ -154,22 +163,11 @@ class _PartDisplayState extends State<PartDetailWidget> {
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Part Details"),
Widget getBody(BuildContext context) {
return Center(
child: ListView(
children: partTiles(),
),
drawer: new InvenTreeDrawer(context),
floatingActionButton: FloatingActionButton(
child: FaIcon(FontAwesomeIcons.ellipsisH),
// TODO - Add pop-up icons
// Ref: https://stackoverflow.com/questions/46480221/flutter-floating-action-button-with-speed-dial#46480722
),
body: Center(
child: ListView(
children: partTiles(),
),
)
);
}
}

View File

@ -50,7 +50,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
@override
Future<void> request(BuildContext context) async {
await item.reload();
await item.reload(context);
}
void _editStockItem() {