title: RefreshIndicator with NestedScrollview
body: <p>I want 2 tab pages with a ListView each to share a single RefreshIndicator. However, a RefreshIndicator must have Scrollable as a child (which a TabBarView isn't) so instead I tried making 2 RefreshIndicators per tab as shown in the code below.</p>
  
  <p>But this brings a different problem, I also wanted a floating AppBar which meant I had to use a NestedScrollView. So as a result I end up triggering both RefreshIndicators' onRefresh method whenever I scroll down. Whereas I only need one to refresh.</p>
  
  <pre><code>import 'package:flutter/material.dart';
  
  main() {
      runApp(
          MaterialApp(
              home: DefaultTabController(
                  length: 2,
                  child: Scaffold(
                      body: NestedScrollView(
                          headerSliverBuilder: (context, innerBoxIsScrolled) {
                              return [
                                  SliverAppBar(
                                      floating: true,
                                      snap: true,
                                      bottom: TabBar(
                                          tabs: [
                                              Tab(text: 'Page1'),
                                              Tab(text: 'Page2'),
                                          ],
                                      ),
                                  ),
                              ];
                          },
                          body: TabBarView(
                              children: [
                                  Page(1),
                                  Page(2),
                              ],
                          ),
                      ),
                  ),
              ),
          ),
      );
  }
  
  class Page extends StatefulWidget {
      final pageNumber;
      Page(this.pageNumber);
      createState() =&gt; PageState();
  }
  
  class PageState extends State&lt;Page&gt; with AutomaticKeepAliveClientMixin {
      get wantKeepAlive =&gt; true;
  
      build(context){
          super.build(context);
          return RefreshIndicator(
              onRefresh: () =&gt; Future(() async {
                  print('Refreshing page no. ${widget.pageNumber}');  // This prints twice once both tabs have been opened
                  await Future.delayed(Duration(seconds: 5));
              }),
              child: ListView.builder(
                  itemBuilder: ((context, index){
                      return ListTile(
                          title: Text('Item $index')
                      );
                  }),
              )
          );
      }
  }
  </code></pre>
  
  <p>The AutomaticKeepAliveClientMixin is there to prevent the pages rebuilding every time I switch tabs as this would be an expensive process in my actual app.</p>
  
  <p>A solution that uses a single RefreshIndicator for both tabs would be most ideal, but any help is appreciated.</p>