[LayoutBuilder] Implements baseline logic to pass baseline to child (#65000)
This commit is contained in:
parent
bcd0959ac3
commit
4e89ccfdee
@ -361,6 +361,13 @@ class _RenderLayoutBuilder extends RenderBox with RenderObjectWithChildMixin<Ren
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
double computeDistanceToActualBaseline(TextBaseline baseline) {
|
||||
if (child != null)
|
||||
return child.getDistanceToActualBaseline(baseline);
|
||||
return super.computeDistanceToActualBaseline(baseline);
|
||||
}
|
||||
|
||||
@override
|
||||
bool hitTestChildren(BoxHitTestResult result, { Offset position }) {
|
||||
return child?.hitTest(result, position: position) ?? false;
|
||||
|
@ -93,6 +93,26 @@ void main() {
|
||||
await tester.pump();
|
||||
expect(calls, 2);
|
||||
});
|
||||
|
||||
testWidgets('LayoutBuilder returns child\'s baseline', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Material(
|
||||
child: Baseline(
|
||||
baseline: 180.0,
|
||||
baselineType: TextBaseline.alphabetic,
|
||||
child: LayoutBuilder(
|
||||
builder: (BuildContext context, BoxConstraints constraints) {
|
||||
return BaselineDetector(() {});
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(tester.getRect(find.byType(BaselineDetector)).top, 160.0);
|
||||
});
|
||||
}
|
||||
|
||||
class BaselineDetector extends LeafRenderObjectWidget {
|
||||
@ -133,7 +153,7 @@ class RenderBaselineDetector extends RenderBox {
|
||||
double computeDistanceToActualBaseline(TextBaseline baseline) {
|
||||
if (callback != null)
|
||||
callback();
|
||||
return 0.0;
|
||||
return 20.0;
|
||||
}
|
||||
|
||||
void dirty() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user