From 869c5a83cff6701c9e3d6c75281c9c27f9275432 Mon Sep 17 00:00:00 2001 From: Serhii Date: Sat, 29 Mar 2025 00:08:25 +0200 Subject: [PATCH] Update adaptable_page_view.dart (#2134) Co-authored-by: Matthew Fosse --- lib/src/widgets/adaptable_page_view.dart | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/src/widgets/adaptable_page_view.dart b/lib/src/widgets/adaptable_page_view.dart index c6800ae22..fc2506e01 100644 --- a/lib/src/widgets/adaptable_page_view.dart +++ b/lib/src/widgets/adaptable_page_view.dart @@ -137,10 +137,25 @@ class _RenderSizingContainer extends RenderProxyBox { parentUsesSize: true, ); - final a = sizes[page.floor()]!; - final b = sizes[page.ceil()]!; + final int floorPage = page.floor(); + final int ceilPage = page.ceil(); + + Size? a = sizes[floorPage]; + Size? b = sizes[ceilPage]; + + if (a == null && sizes.isNotEmpty) { + a = sizes.values.first; + } + if (b == null && sizes.isNotEmpty) { + b = sizes.values.first; + } + + a ??= child.getDryLayout(constraints); + b ??= a; + + final double t = (page - floorPage).clamp(0.0, 1.0); + final double height = lerpDouble(a.height, b.height, t) ?? a.height; - final height = lerpDouble(a.height, b.height, page - page.floor()); child.layout( constraints.copyWith(minHeight: height, maxHeight: height),