Skip to content

Commit ba99bd0

Browse files
committed
Avoid ChildLayoutHelper.getBaseline and friends (flutter@24)
1 parent 473f559 commit ba99bd0

File tree

1 file changed

+42
-18
lines changed

1 file changed

+42
-18
lines changed

packages/core/lib/src/widgets/html_flex.dart

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,21 @@ class _LayoutSizes {
264264
final double? spacePerFlex;
265265
}
266266

267+
extension on CrossAxisAlignment {
268+
double _getChildCrossAxisOffset(double freeSpace, bool flipped) {
269+
return switch (this) {
270+
CrossAxisAlignment.stretch || CrossAxisAlignment.baseline => 0.0,
271+
CrossAxisAlignment.start => flipped ? freeSpace : 0.0,
272+
CrossAxisAlignment.center => freeSpace / 2,
273+
CrossAxisAlignment.end =>
274+
CrossAxisAlignment.start._getChildCrossAxisOffset(
275+
freeSpace,
276+
!flipped,
277+
),
278+
};
279+
}
280+
}
281+
267282
extension on MainAxisAlignment {
268283
(double leadingSpace, double betweenSpace) _distributeSpace(
269284
double freeSpace,
@@ -312,19 +327,24 @@ extension on MainAxisAlignment {
312327
}
313328
}
314329

315-
extension on CrossAxisAlignment {
316-
double _getChildCrossAxisOffset(double freeSpace, bool flipped) {
317-
return switch (this) {
318-
CrossAxisAlignment.stretch || CrossAxisAlignment.baseline => 0.0,
319-
CrossAxisAlignment.start => flipped ? freeSpace : 0.0,
320-
CrossAxisAlignment.center => freeSpace / 2,
321-
CrossAxisAlignment.end =>
322-
CrossAxisAlignment.start._getChildCrossAxisOffset(
323-
freeSpace,
324-
!flipped,
325-
),
326-
};
327-
}
330+
double? _getChildBaseline(
331+
RenderBox child,
332+
BoxConstraints constraints,
333+
TextBaseline baseline,
334+
) {
335+
// TODO: use ChildLayoutHelper.getBaseline when minimum Flutter version >= 3.24
336+
assert(!child.debugNeedsLayout);
337+
assert(child.constraints == constraints);
338+
return child.getDistanceToBaseline(baseline, onlyReal: true);
339+
}
340+
341+
double? _getChildBaselineDry(
342+
RenderBox child,
343+
BoxConstraints constraints,
344+
TextBaseline baseline,
345+
) {
346+
// TODO: use ChildLayoutHelper.getDryBaseline when minimum Flutter version >= 3.24
347+
return child.getDryBaseline(constraints, baseline);
328348
}
329349

330350
class RenderHtmlFlex extends RenderBox
@@ -544,7 +564,7 @@ class RenderHtmlFlex extends RenderBox
544564
? BoxConstraints(maxWidth: extent)
545565
: BoxConstraints(maxHeight: extent),
546566
layoutChild: layoutChild,
547-
getBaseline: ChildLayoutHelper.getDryBaseline,
567+
getBaseline: _getChildBaselineDry,
548568
).axisSize.crossAxisExtent;
549569
}
550570
}
@@ -728,7 +748,7 @@ class RenderHtmlFlex extends RenderBox
728748
final _LayoutSizes sizes = _computeSizes(
729749
constraints: constraints,
730750
layoutChild: ChildLayoutHelper.dryLayoutChild,
731-
getBaseline: ChildLayoutHelper.getDryBaseline,
751+
getBaseline: _getChildBaselineDry,
732752
);
733753

734754
if (_isBaselineAligned) {
@@ -816,7 +836,7 @@ class RenderHtmlFlex extends RenderBox
816836
return _computeSizes(
817837
constraints: constraints,
818838
layoutChild: ChildLayoutHelper.dryLayoutChild,
819-
getBaseline: ChildLayoutHelper.getDryBaseline,
839+
getBaseline: _getChildBaselineDry,
820840
).axisSize.toSize(direction);
821841
}
822842

@@ -937,7 +957,11 @@ class RenderHtmlFlex extends RenderBox
937957
_LayoutSizes _computeSizes({
938958
required BoxConstraints constraints,
939959
required ChildLayouter layoutChild,
940-
required ChildBaselineGetter getBaseline,
960+
required double? Function(
961+
RenderBox child,
962+
BoxConstraints constraints,
963+
TextBaseline baseline,
964+
) getBaseline,
941965
}) {
942966
assert(_debugHasNecessaryDirections);
943967

@@ -1077,7 +1101,7 @@ class RenderHtmlFlex extends RenderBox
10771101
final _LayoutSizes sizes = _computeSizes(
10781102
constraints: constraints,
10791103
layoutChild: ChildLayoutHelper.layoutChild,
1080-
getBaseline: ChildLayoutHelper.getBaseline,
1104+
getBaseline: _getChildBaseline,
10811105
);
10821106

10831107
final double crossAxisExtent = sizes.axisSize.crossAxisExtent;

0 commit comments

Comments
 (0)