2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-12 18:25:26 +00:00

Make a 'refreshable_state' class which makes API requests easier

This commit is contained in:
Oliver Walters
2020-04-15 11:39:29 +10:00
parent 5cc80ee3f4
commit 58f6fd0f15
2 changed files with 123 additions and 99 deletions

View File

@ -0,0 +1,61 @@
import 'package:InvenTree/widget/drawer.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:InvenTree/widget/drawer.dart';
abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
// Storage for context once "Build" is called
BuildContext context;
String app_bar_title = "App Bar Title";
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) => request(context));
}
// Function to request data for this page
Future<void> request(BuildContext context) async {
return;
}
Future<void> refresh() async {
await request(context);
setState(() {});
}
// Function to construct an appbar (override if needed)
AppBar getAppBar(BuildContext context) {
return AppBar(
title: Text(app_bar_title)
);
}
// Function to construct a drawer (override if needed)
Widget getDrawer(BuildContext context) {
return InvenTreeDrawer(context);
}
// Function to construct a body (MUST BE PROVIDED)
Widget getBody(BuildContext context);
@override
Widget build(BuildContext context) {
// Save the context for future use
this.context = context;
return Scaffold(
appBar: getAppBar(context),
drawer: getDrawer(context),
body: RefreshIndicator(
onRefresh: refresh,
child: getBody(context)
)
);
}
}