Pesto crash (#8238)

diff --git a/examples/flutter_gallery/lib/demo/pesto_demo.dart b/examples/flutter_gallery/lib/demo/pesto_demo.dart
index d37e5d2..bcd089f 100644
--- a/examples/flutter_gallery/lib/demo/pesto_demo.dart
+++ b/examples/flutter_gallery/lib/demo/pesto_demo.dart
@@ -152,7 +152,8 @@
               recipe: recipe,
               onTap: () { showRecipePage(context, recipe); },
             );
-          }
+          },
+          childCount: config.recipes.length,
         ),
       ),
     );
diff --git a/examples/flutter_gallery/test/pesto_test.dart b/examples/flutter_gallery/test/pesto_test.dart
index 770ce93..f3598a1 100644
--- a/examples/flutter_gallery/test/pesto_test.dart
+++ b/examples/flutter_gallery/test/pesto_test.dart
@@ -41,4 +41,18 @@
     await tester.pump();
     await tester.pump(const Duration(seconds: 1)); // transition is complete
   });
+
+  testWidgets('Pesto can be scrolled all the way down', (WidgetTester tester) async {
+    await tester.pumpWidget(new GalleryApp());
+    await tester.pump(); // see https://github.com/flutter/flutter/issues/1865
+
+    await tester.tap(find.text('Pesto'));
+    await tester.pump(); // Launch pesto
+    await tester.pump(const Duration(seconds: 1)); // transition is complete
+
+    await tester.fling(find.text('Pesto Bruschetta'), const Offset(0.0, -200.0), 10000.0);
+    await tester.pump(); // start fling
+    await tester.pumpUntilNoTransientCallbacks();
+    expect(find.text('Sicilian-Style sardines'), findsOneWidget);
+  });
 }