diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart index 91da52b829..de1c8818db 100644 --- a/packages/flutter/lib/src/widgets/page_view.dart +++ b/packages/flutter/lib/src/widgets/page_view.dart @@ -86,7 +86,7 @@ class _PagePosition extends ScrollPosition { final double oldViewportDimensions = this.viewportDimension; final bool result = super.applyViewportDimension(viewportDimension); final double oldPixels = pixels; - final double page = oldPixels == null ? initialPage.toDouble() : oldPixels / oldViewportDimensions; + final double page = (oldPixels == null || oldViewportDimensions == 0.0) ? initialPage.toDouble() : oldPixels / oldViewportDimensions; final double newPixels = page * viewportDimension; if (newPixels != oldPixels) { correctPixels(newPixels); diff --git a/packages/flutter/test/widgets/page_view_test.dart b/packages/flutter/test/widgets/page_view_test.dart index d4565b4b22..747b5f3b88 100644 --- a/packages/flutter/test/widgets/page_view_test.dart +++ b/packages/flutter/test/widgets/page_view_test.dart @@ -204,5 +204,17 @@ void main() { )); expect(find.text('Alabama'), findsOneWidget); + + await tester.pumpWidget(new Center( + child: new SizedBox( + width: 200.0, + height: 200.0, + child: new PageView( + children: kStates.map((String state) => new Text(state)).toList(), + ), + ), + )); + + expect(find.text('Alabama'), findsOneWidget); }); }