Skip to content

Commit 6f65f52

Browse files
content dimensions are not established get controller value error
1 parent 112e8b5 commit 6f65f52

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

packages/flutter/lib/src/widgets/page_view.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,10 +384,10 @@ class _PagePosition extends ScrollPositionWithSingleContext implements PageMetri
384384
@override
385385
double? get page {
386386
assert(
387-
!hasPixels || hasContentDimensions,
387+
!hasPixels || hasContentDimensions || !haveDimensions,
388388
'Page value is only available after content dimensions are established.',
389389
);
390-
return !hasPixels || !hasContentDimensions
390+
return !hasPixels || !(hasContentDimensions || haveDimensions)
391391
? null
392392
: _cachedPage ?? getPageFromPixels(clampDouble(pixels, minScrollExtent, maxScrollExtent), viewportDimension);
393393
}

packages/flutter/test/widgets/page_view_test.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,4 +1372,27 @@ void main() {
13721372
await tester.pumpWidget(createPageView(null));
13731373
});
13741374
});
1375+
1376+
1377+
testWidgets('content dimensions are not established get controller value error', (WidgetTester tester) async {
1378+
final PageController controller = PageController();
1379+
addTearDown(controller.dispose);
1380+
await tester.pumpWidget(MaterialApp(
1381+
home: Scaffold(
1382+
body: PageView(
1383+
controller: controller,
1384+
children: <Widget>[
1385+
Builder(
1386+
builder: (BuildContext context) {
1387+
final double currentPage = controller.hasClients ? controller.page ?? -1.0 : -2.0;
1388+
return Center(child: Text(currentPage.toString()));
1389+
},
1390+
),
1391+
],
1392+
),
1393+
),
1394+
));
1395+
1396+
expect(find.text('-1.0'), findsOneWidget);
1397+
});
13751398
}

0 commit comments

Comments
 (0)