From 1a23d6ddaf1ef49d0dca2dbcdb7c06045d41cf70 Mon Sep 17 00:00:00 2001 From: Dan Cojocaru Date: Tue, 31 Aug 2021 16:06:23 +0300 Subject: [PATCH] Added dispose check on RefreshFutureBuilder --- lib/components/refresh_future_builder.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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(