From 411db2d587b4b3d888d7d3ba6ab622560960cb78 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Fri, 9 Sep 2016 14:25:34 -0700 Subject: [PATCH] Tabs occasionally tried to setState after dispose (#5784) Fixes https://github.com/flutter/flutter/issues/5776 --- dev/benchmarks/microbenchmarks/README.md | 8 ++++---- .../microbenchmarks/lib/stocks/layout_bench.dart | 1 - packages/flutter/lib/src/material/tabs.dart | 10 ++++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dev/benchmarks/microbenchmarks/README.md b/dev/benchmarks/microbenchmarks/README.md index 6f6e31758be..1c7d38319f5 100644 --- a/dev/benchmarks/microbenchmarks/README.md +++ b/dev/benchmarks/microbenchmarks/README.md @@ -3,10 +3,10 @@ To run these benchmarks on a device: ``` -flutter run --release -t lib/gestures/velocity_tracker_data.dart -flutter run --release -t lib/stocks/animation_bench.dart -flutter run --release -t lib/stocks/build_bench.dart -flutter run --release -t lib/stocks/layout_bench.dart +flutter run --release lib/gestures/velocity_tracker_data.dart +flutter run --release lib/stocks/animation_bench.dart +flutter run --release lib/stocks/build_bench.dart +flutter run --release lib/stocks/layout_bench.dart ``` The results should be in the device logs. diff --git a/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart b/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart index 0a1d1999012..20902fe567c 100644 --- a/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart +++ b/dev/benchmarks/microbenchmarks/lib/stocks/layout_bench.dart @@ -11,7 +11,6 @@ const Duration kBenchmarkTime = const Duration(seconds: 15); Future main() async { - assert(false); // don't run this in checked mode! Use --release. stock_data.StockDataFetcher.actuallyFetchData = false; final Stopwatch watch = new Stopwatch(); diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart index 227dd635c24..3f5d566dcd7 100644 --- a/packages/flutter/lib/src/material/tabs.dart +++ b/packages/flutter/lib/src/material/tabs.dart @@ -977,10 +977,12 @@ class _TabBarState extends ScrollableState> implements TabBarSelect _indicatorRect = _selection != null ? _tabIndicatorRect(_selection.index) : Rect.zero; _updateScrollBehavior(); SchedulerBinding.instance.addPostFrameCallback((Duration timeStamp) { - setState(() { - // the changes were made at layout time - // TODO(ianh): remove this setState: https://github.com/flutter/flutter/issues/5749 - }); + if (mounted) { + setState(() { + // the changes were made at layout time + // TODO(ianh): remove this setState: https://github.com/flutter/flutter/issues/5749 + }); + } }); }