Fix null check for content dimensions in page getter (#87824)
diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart index 2a88557..ed7e6a0 100644 --- a/packages/flutter/lib/src/widgets/page_view.dart +++ b/packages/flutter/lib/src/widgets/page_view.dart
@@ -385,10 +385,12 @@ @override double? get page { assert( - !hasPixels || (minScrollExtent != null && maxScrollExtent != null), + !hasPixels || hasContentDimensions, 'Page value is only available after content dimensions are established.', ); - return !hasPixels ? null : getPageFromPixels(pixels.clamp(minScrollExtent, maxScrollExtent), viewportDimension); + return !hasPixels || !hasContentDimensions + ? null + : getPageFromPixels(pixels.clamp(minScrollExtent, maxScrollExtent), viewportDimension); } @override
diff --git a/packages/flutter/test/widgets/page_view_test.dart b/packages/flutter/test/widgets/page_view_test.dart index 2207fd2..0ce4e63 100644 --- a/packages/flutter/test/widgets/page_view_test.dart +++ b/packages/flutter/test/widgets/page_view_test.dart
@@ -14,6 +14,12 @@ const Duration _frameDuration = Duration(milliseconds: 100); void main() { + testWidgets('PageController cannot return page while unattached', + (WidgetTester tester) async { + final PageController controller = PageController(); + expect(() => controller.page, throwsAssertionError); + }); + testWidgets('PageView control test', (WidgetTester tester) async { final List<String> log = <String>[];