@@ -133,6 +133,45 @@ void main() {
133133 expect (find.text ('Illinois' ), findsOneWidget);
134134 });
135135
136+ testWidgets ('_PagePosition.applyViewportDimension should not throw' , (WidgetTester tester) async {
137+ // Regression test for https://github.com/flutter/flutter/issues/101007
138+ final PageController controller = PageController (
139+ initialPage: 1 ,
140+ );
141+
142+ // Set the starting viewportDimension to 0.0
143+ await tester.binding.setSurfaceSize (Size .zero);
144+ final MediaQueryData mediaQueryData = MediaQueryData .fromWindow (tester.binding.window);
145+
146+ Widget build (Size size) {
147+ return MediaQuery (
148+ data: mediaQueryData.copyWith (size: size),
149+ child: Directionality (
150+ textDirection: TextDirection .ltr,
151+ child: Center (
152+ child: SizedBox .expand (
153+ child: PageView (
154+ controller: controller,
155+ onPageChanged: (int page) { },
156+ children: kStates.map <Widget >((String state) => Text (state)).toList (),
157+ ),
158+ ),
159+ ),
160+ ),
161+ );
162+ }
163+
164+ await tester.pumpWidget (build (Size .zero));
165+ const Size surfaceSize = Size (500 ,400 );
166+ await tester.binding.setSurfaceSize (surfaceSize);
167+ await tester.pumpWidget (build (surfaceSize));
168+
169+ expect (tester.takeException (), isNull);
170+
171+ // Reset TestWidgetsFlutterBinding surfaceSize
172+ await tester.binding.setSurfaceSize (null );
173+ });
174+
136175 testWidgets ('PageController cannot return page while unattached' ,
137176 (WidgetTester tester) async {
138177 final PageController controller = PageController ();
0 commit comments