Browse Source

Added dispose check on RefreshFutureBuilder

tmp
Dan Cojocaru 3 years ago
parent
commit
1a23d6ddaf
Signed by: kbruen
GPG Key ID: 818A889458EDC937
  1. 13
      lib/components/refresh_future_builder.dart

13
lib/components/refresh_future_builder.dart

@ -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(

Loading…
Cancel
Save