Skip to content

Commit fff033a

Browse files
committed
Only check propotionalWidth once
1 parent 01764dd commit fff033a

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

packages/flutter/lib/src/cupertino/sliding_segmented_control.dart

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,13 @@ class _RenderSegmentedControl<T extends Object> extends RenderBox
10131013
return maxHeight;
10141014
}
10151015

1016-
List<double> _getChildIntrinsicWidths(BoxConstraints constraints) {
1016+
List<double> _getChildWidths(BoxConstraints constraints) {
1017+
if (!proportionalWidth) {
1018+
final double maxChildWidth = _getMaxChildWidth(constraints);
1019+
final int segmentCount = childCount ~/ 2 + 1;
1020+
return List<double>.filled(segmentCount, maxChildWidth);
1021+
}
1022+
10171023
final List<double> segmentWidths = <double>[];
10181024
RenderBox? child = firstChild;
10191025
while (child != null) {
@@ -1043,12 +1049,7 @@ class _RenderSegmentedControl<T extends Object> extends RenderBox
10431049

10441050
Size _computeOverallSize(BoxConstraints constraints) {
10451051
final double maxChildHeight = _getMaxChildHeight(constraints, constraints.maxWidth);
1046-
if (proportionalWidth) {
1047-
return constraints.constrain(Size(_getChildIntrinsicWidths(constraints).sum + totalSeparatorWidth, maxChildHeight));
1048-
}
1049-
final int childCount = this.childCount ~/ 2 + 1;
1050-
final double maxChildWidth = _getMaxChildWidth(constraints);
1051-
return constraints.constrain(Size(maxChildWidth * childCount + totalSeparatorWidth, maxChildHeight));
1052+
return constraints.constrain(Size(_getChildWidths(constraints).sum + totalSeparatorWidth, maxChildHeight));
10521053
}
10531054

10541055
@override
@@ -1071,13 +1072,7 @@ class _RenderSegmentedControl<T extends Object> extends RenderBox
10711072
@override
10721073
void performLayout() {
10731074
final BoxConstraints constraints = this.constraints;
1074-
1075-
if (proportionalWidth) {
1076-
segmentWidths = _getChildIntrinsicWidths(constraints);
1077-
} else {
1078-
final Size childSize = _calculateChildSize(constraints);
1079-
segmentWidths = List<double>.filled(childCount, childSize.width);
1080-
}
1075+
segmentWidths = _getChildWidths(constraints);
10811076

10821077
final double childHeight = _getMaxChildHeight(constraints, double.infinity);
10831078
final BoxConstraints separatorConstraints = BoxConstraints(minHeight: childHeight, maxHeight: childHeight);

0 commit comments

Comments
 (0)