@@ -133,6 +133,45 @@ void main() {
133
133
expect (find.text ('Illinois' ), findsOneWidget);
134
134
});
135
135
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
+
136
175
testWidgets ('PageController cannot return page while unattached' ,
137
176
(WidgetTester tester) async {
138
177
final PageController controller = PageController ();
0 commit comments