From ddfaec19ad6dc6a0c6f4edb66295960a93597c1e Mon Sep 17 00:00:00 2001 From: Alexandre Daigle Date: Tue, 17 Aug 2021 18:57:06 -0400 Subject: [PATCH] Fix null check for content dimensions in page getter (#87824) --- packages/flutter/lib/src/widgets/page_view.dart | 6 ++++-- packages/flutter/test/widgets/page_view_test.dart | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart index 2a88557637..ed7e6a0e3d 100644 --- a/packages/flutter/lib/src/widgets/page_view.dart +++ b/packages/flutter/lib/src/widgets/page_view.dart @@ -385,10 +385,12 @@ class _PagePosition extends ScrollPositionWithSingleContext implements PageMetri @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 2207fd229b..0ce4e6312a 100644 --- a/packages/flutter/test/widgets/page_view_test.dart +++ b/packages/flutter/test/widgets/page_view_test.dart @@ -14,6 +14,12 @@ import 'states.dart'; 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 log = [];