[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
|
@override
|
||||||
bool hitTestChildren(BoxHitTestResult result, { Offset position }) {
|
bool hitTestChildren(BoxHitTestResult result, { Offset position }) {
|
||||||
return child?.hitTest(result, position: position) ?? false;
|
return child?.hitTest(result, position: position) ?? false;
|
||||||
|
@ -93,6 +93,26 @@ void main() {
|
|||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(calls, 2);
|
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 {
|
class BaselineDetector extends LeafRenderObjectWidget {
|
||||||
@ -133,7 +153,7 @@ class RenderBaselineDetector extends RenderBox {
|
|||||||
double computeDistanceToActualBaseline(TextBaseline baseline) {
|
double computeDistanceToActualBaseline(TextBaseline baseline) {
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback();
|
callback();
|
||||||
return 0.0;
|
return 20.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dirty() {
|
void dirty() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user