diff --git a/lib/components/refresh_future_builder.dart b/lib/components/refresh_future_builder.dart index 78a53e9..ac74a94 100644 --- a/lib/components/refresh_future_builder.dart +++ b/lib/components/refresh_future_builder.dart @@ -14,6 +14,7 @@ class RefreshFutureBuilder extends StatefulWidget { class _RefreshFutureBuilderState extends State> { late RefreshFutureBuilderSnapshot snapshot; Future Function()? futureCreator; + bool _disposed = false; @override void initState() { @@ -61,11 +62,17 @@ class _RefreshFutureBuilderState extends State> { }); 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 extends State> { } } + @override + void dispose() { + _disposed = true; + super.dispose(); + } + @override Widget build(BuildContext context) { return widget.builder(