From a8e847aba9b64e8d58e4ea0c5ade9ee1dd4c356b Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Sat, 18 Feb 2017 13:38:56 -0800 Subject: [PATCH] PageView shouldn't crash in zero-size container (#8282) Previously, we were dividing by zero. Fixes #8281 --- .../src/rendering/sliver_fixed_extent_list.dart | 4 ++-- packages/flutter/test/widgets/page_view_test.dart | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart b/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart index 23f5dcacf6..7eda9521c8 100644 --- a/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart +++ b/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart @@ -37,8 +37,8 @@ abstract class RenderSliverFixedExtentBoxAdaptor extends RenderSliverMultiBoxAda maxExtent: itemExtent, ); - final int firstIndex = math.max(0, scrollOffset ~/ itemExtent); - final int targetLastIndex = math.max(0, (targetEndScrollOffset / itemExtent).ceil() - 1); + final int firstIndex = itemExtent > 0.0 ? math.max(0, scrollOffset ~/ itemExtent) : 0; + final int targetLastIndex = itemExtent > 0.0 ? math.max(0, (targetEndScrollOffset / itemExtent).ceil() - 1) : 0; if (firstChild != null) { final int oldFirstIndex = indexOf(firstChild); diff --git a/packages/flutter/test/widgets/page_view_test.dart b/packages/flutter/test/widgets/page_view_test.dart index 49531a2703..d4565b4b22 100644 --- a/packages/flutter/test/widgets/page_view_test.dart +++ b/packages/flutter/test/widgets/page_view_test.dart @@ -191,4 +191,18 @@ void main() { expect(find.text('Arizona'), findsOneWidget); }); + + testWidgets('PageView in zero-size container', (WidgetTester tester) async { + await tester.pumpWidget(new Center( + child: new SizedBox( + width: 0.0, + height: 0.0, + child: new PageView( + children: kStates.map((String state) => new Text(state)).toList(), + ), + ), + )); + + expect(find.text('Alabama'), findsOneWidget); + }); }