@@ -925,22 +925,13 @@ abstract class RenderViewportBase<ParentDataClass extends ContainerParentDataMix
925925 assert (child is RenderSliver );
926926 final RenderSliver sliver = child as RenderSliver ;
927927
928- final double targetMainAxisExtent;
929928 // The scroll offset of `rect` within `child`.
930- switch (applyGrowthDirectionToAxisDirection (axisDirection, growthDirection)) {
931- case AxisDirection .up:
932- leadingScrollOffset += pivotExtent - rectLocal.bottom;
933- targetMainAxisExtent = rectLocal.height;
934- case AxisDirection .right:
935- leadingScrollOffset += rectLocal.left;
936- targetMainAxisExtent = rectLocal.width;
937- case AxisDirection .down:
938- leadingScrollOffset += rectLocal.top;
939- targetMainAxisExtent = rectLocal.height;
940- case AxisDirection .left:
941- leadingScrollOffset += pivotExtent - rectLocal.right;
942- targetMainAxisExtent = rectLocal.width;
943- }
929+ leadingScrollOffset += switch (applyGrowthDirectionToAxisDirection (axisDirection, growthDirection)) {
930+ AxisDirection .up => pivotExtent - rectLocal.bottom,
931+ AxisDirection .left => pivotExtent - rectLocal.right,
932+ AxisDirection .right => rectLocal.left,
933+ AxisDirection .down => rectLocal.top,
934+ };
944935
945936 // So far leadingScrollOffset is the scroll offset of `rect` in the `child`
946937 // sliver's sliver coordinate system. The sign of this value indicates
@@ -973,35 +964,26 @@ abstract class RenderViewportBase<ParentDataClass extends ContainerParentDataMix
973964 // If child's growth direction is reverse, when viewport.offset is
974965 // `leadingScrollOffset`, it is positioned just outside of the leading
975966 // edge of the viewport.
976- switch (axis) {
977- case Axis .vertical:
978- leadingScrollOffset -= targetRect.height;
979- case Axis .horizontal:
980- leadingScrollOffset -= targetRect.width;
981- }
967+ leadingScrollOffset -= switch (axis) {
968+ Axis .vertical => targetRect.height,
969+ Axis .horizontal => targetRect.width,
970+ };
982971 }
983972
984- final double mainAxisExtent;
985- switch (axis) {
986- case Axis .horizontal:
987- mainAxisExtent = size.width - extentOfPinnedSlivers;
988- case Axis .vertical:
989- mainAxisExtent = size.height - extentOfPinnedSlivers;
990- }
973+ final double mainAxisExtentDifference = switch (axis) {
974+ Axis .horizontal => size.width - extentOfPinnedSlivers - rectLocal.width,
975+ Axis .vertical => size.height - extentOfPinnedSlivers - rectLocal.height,
976+ };
991977
992- final double targetOffset = leadingScrollOffset - (mainAxisExtent - targetMainAxisExtent) * alignment;
978+ final double targetOffset = leadingScrollOffset - mainAxisExtentDifference * alignment;
993979 final double offsetDifference = offset.pixels - targetOffset;
994980
995- switch (axisDirection) {
996- case AxisDirection .down:
997- targetRect = targetRect.translate (0.0 , offsetDifference);
998- case AxisDirection .right:
999- targetRect = targetRect.translate (offsetDifference, 0.0 );
1000- case AxisDirection .up:
1001- targetRect = targetRect.translate (0.0 , - offsetDifference);
1002- case AxisDirection .left:
1003- targetRect = targetRect.translate (- offsetDifference, 0.0 );
1004- }
981+ targetRect = switch (axisDirection) {
982+ AxisDirection .up => targetRect.translate (0.0 , - offsetDifference),
983+ AxisDirection .down => targetRect.translate (0.0 , offsetDifference),
984+ AxisDirection .left => targetRect.translate (- offsetDifference, 0.0 ),
985+ AxisDirection .right => targetRect.translate ( offsetDifference, 0.0 ),
986+ };
1005987
1006988 return RevealedOffset (offset: targetOffset, rect: targetRect);
1007989 }
0 commit comments