Added dispose check on RefreshFutureBuilder

This commit is contained in:
Dan Cojocaru 2021-08-31 16:06:23 +03:00
parent caf365a645
commit 1a23d6ddaf
Signed by: kbruen
GPG key ID: 818A889458EDC937

View file

@ -14,6 +14,7 @@ class RefreshFutureBuilder<T> extends StatefulWidget {
class _RefreshFutureBuilderState<T> extends State<RefreshFutureBuilder<T>> {
late RefreshFutureBuilderSnapshot<T> snapshot;
Future<T> Function()? futureCreator;
bool _disposed = false;
@override
void initState() {
@ -61,11 +62,17 @@ class _RefreshFutureBuilderState<T> extends State<RefreshFutureBuilder<T>> {
});
try {
final data = await futureCreator!();
if (_disposed) {
return;
}
setState(() {
snapshot = RefreshFutureBuilderSnapshot.withData(data);
});
}
catch (e, st) {
if (_disposed) {
return;
}
setState(() {
if (snapshot.state == RefreshFutureBuilderState.waiting) {
snapshot = RefreshFutureBuilderSnapshot.withError(e, st);
@ -77,6 +84,12 @@ class _RefreshFutureBuilderState<T> extends State<RefreshFutureBuilder<T>> {
}
}
@override
void dispose() {
_disposed = true;
super.dispose();
}
@override
Widget build(BuildContext context) {
return widget.builder(