title: Reverse the order a SliverFixedExtentList is built in Flutter
body: <p>I have a FutureBuilder on the homepage of my app that returns a SliverFixedExtentList after the future is complete. It looks something like this:</p>
  
  <pre><code>import 'package:cloud_firestore/cloud_firestore.dart';
  import 'package:flutter/material.dart';
  import 'package:project_spruce/DataBase/DataBaseConnection.dart';
  import 'package:project_spruce/states/UserState.dart';
  import 'package:project_spruce/widgets/FabBottomAppBar.dart';
  import 'package:project_spruce/widgets/FoodItemCard.dart';
  import 'package:provider/provider.dart';
  
  class HomeScreen extends StatelessWidget {
  
    @override
    Widget build(BuildContext context) {
      final List&lt;DocumentSnapshot&gt; _documents = List&lt;DocumentSnapshot&gt;();
      String uid = Provider.of&lt;UserState&gt;(context).firebaseUser.uid;
      return FutureBuilder(
        future: Provider.of&lt;DataBaseConnection&gt;(context).getQuerySnapshot('eatenFoods/'+ uid +'/food'),
        builder: (BuildContext context, AsyncSnapshot&lt;QuerySnapshot&gt; snapshot){
          Widget child;
          if (snapshot.hasData){
            _documents.clear();
            snapshot.data.documents.forEach((doc)=&gt; _documents.add(doc));
            child = SliverFixedExtentList(
              itemExtent: 150,
              delegate: new SliverChildBuilderDelegate(
                (context, index) =&gt; FoodItemCard(_documents[index]),
                childCount: _documents.length,
              ),
            );
          }else {
            child = SliverToBoxAdapter(child: CircularProgressIndicator());
          }
          return Scaffold(
              floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
              floatingActionButton: FloatingActionButton(
                onPressed: () =&gt; Navigator.pushNamed(context, '/camera_screen'),
                tooltip: 'Add',
                elevation: 2,
                child: Icon(Icons.add),
                backgroundColor: Theme.of(context).primaryColor,
                foregroundColor: Colors.white,
              ),
              bottomNavigationBar: FabBottomAppBar(
                backgroundColor: Theme.of(context).primaryColor,
                color: Colors.white,
                selectedColor: Colors.white,
                iconSize: 30,
                notchedShape: CircularNotchedRectangle(),
                items: [
                  FabBottomAppBarItem(iconData: Icons.search, text: 'Search'),
                  FabBottomAppBarItem(iconData: Icons.pie_chart, text: 'Statistics'),
                  FabBottomAppBarItem(
                      iconData: Icons.storage, text: 'Food Inventory'),
                  FabBottomAppBarItem(iconData: Icons.person, text: 'Profile'),
                ],
                onTabSelected: (int tabIndex) {
                  switch (tabIndex) {
                    case 0:
                      {
                        // Search
                        Navigator.pushNamed(context, '/search');
                      }
                      break;
                    case 1:
                      {
                        // Statistics
                        Navigator.pushNamed(context, '/stats');
                      }
                      break;
                    case 2:
                      {
                        // Inventory
                        Navigator.pushNamed(context, '/inventory');
                      }
                      break;
                    case 3:
                      {
                        // Profile
                        Navigator.pushNamed(context, '/profile');
                      }
                      break;
                  }
                },
              ),
              body: new CustomScrollView(
                slivers: &lt;Widget&gt;[
                  SliverAppBar(
                    //title: const Text('Home Page'),
                    actions: &lt;Widget&gt;[
                      IconButton(
                        icon: const Icon(Icons.notifications),
                        tooltip: 'Notifications',
                        onPressed: () =&gt; (){}, //(Navigator.pushNamed(context, '/notifications')),
                      ),
                    ],
                    floating: true,
                    pinned: true,
                    snap: false,
                    forceElevated: true,
                    expandedHeight: 200.0,
                    flexibleSpace: FlexibleSpaceBar(
                      title:
                          Text("Hi, " + Provider.of&lt;UserState&gt;(context).user.name),
                    centerTitle: false,
                    ),
                  ),
                  child,
                ],
              )
              );
        }
      );
    }
  }
  </code></pre>
  
  <p>The future gets a list of documents from the database, then passes them, in order, to a helper class that wraps the data up in a Card. The problem is that this implementation puts the most recent documents on the bottom, and I want them on the top. I can change the order I retrieve the documents from the database <code>Firestore.instance.collection(path).orderBy('date', descending: true).getDocuments();</code>, but since the list doesn't get completely rebuilt each time I return to the page, the new data doesn't show up at all unless I rebuild the app. I also tried setting <code>reverse: true</code> in the custom scroll view, but this reverses everything, including the SliverAppBar.</p>
  
  <p>Is there some way that I can just flip the way the SliverFixedExtentList is built, so that the higher indexes are on the top?</p>