Repository: flutter
Issue: Restore a list scroll state switching between tabs is too slow and memory expensive
Labels: framework,c: performance,f: scrolling,perf: memory,perf: speed,has reproducible steps,P2,found in release: 3.3,found in release: 3.7,team-framework,triaged-framework


## Details
I am ready to publish my first flutter app to read news by category. Every category has a list of posts with title, subtitle, FadeInImage and date. A List powered by RefreshIndicator and paging features. The app works perfect on any device. But I have discovered an issue with restoring scroll state switching between tabs if count of items is about 100+.

Memory usage is huge(example from simple app ).
![Снимок экрана 2019-07-22 в 14 27 48](https://user-images.githubusercontent.com/1618447/61617659-f823b780-ac8c-11e9-8dae-8fc314c58077.png)

1. Steps to reproduce 

Run an app.
Scroll down to the end of a list of numbers(1k items). 
Switch to the next tab and do previous step.
Switch between first and second tabs.

**Actual result:** Tabs switch with a huge delay.
**Expected result:** Tabs should switch with no delay with 60fps.
 
2.  Gist https://gist.github.com/neestell/f2ad6e546610111e68ad418dbc37455c

3. Master channel + profile with skia [video](https://youtu.be/NNXlUwjTzqc)

4.  Observatory [dart-timeline-2019-6-22.txt](https://github.com/flutter/flutter/files/3416260/dart-timeline-2019-6-22.txt)
) 

## Logs

<!--
     Run `flutter analyze` and attach any output of that command below.
     If there are any analysis errors, try resolving them before filing this issue.
-->

```
Analyzing tabs_with_long_scroll_content...                              
No issues found! (ran in 17.8s)

```

<!-- Finally, paste the output of running `flutter doctor -v` here, with your device plugged in. -->

```
MacBook-Air-Dmitriy-Ra:tabs_with_long_scroll_content dmitry$ flutter doctor -v
[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale ru-RU)
    • Flutter version 1.7.8+hotfix.3 at /Volumes/Data/Android/flutter
    • Framework revision b712a172f9 (13 days ago), 2019-07-09 13:14:38 -0700
    • Engine revision 54ad777fd2
    • Dart version 2.4.0

 
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Volumes/Data/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = /Volumes/Data/Android/sdk
    • ANDROID_SDK_ROOT = /Volumes/Data/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
    • Xcode at /Volumes/Data/iOS/Xcode.app/Contents/Developer
    • Xcode 10.2.1, Build version 10E1001
    • CocoaPods version 1.7.1

[✓] iOS tools - develop for iOS devices
    • ios-deploy 1.9.4

[✓] Android Studio (version 3.4)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 37.0.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[✓] Connected device (1 available)
    • Pixel 2 • HT7AZ1A00828 • android-arm64 • Android 9 (API 28)

• No issues found!

```