SliverAppBar with ShrinkWrap Patch (#73195)
This commit is contained in:
parent
84ddffb36b
commit
b65a235139
@ -2009,19 +2009,19 @@ class RenderShrinkWrappingViewport extends RenderViewportBase<SliverLogicalConta
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Iterable<RenderSliver> get childrenInPaintOrder sync* {
|
Iterable<RenderSliver> get childrenInPaintOrder sync* {
|
||||||
RenderSliver? child = firstChild;
|
|
||||||
while (child != null) {
|
|
||||||
yield child;
|
|
||||||
child = childAfter(child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Iterable<RenderSliver> get childrenInHitTestOrder sync* {
|
|
||||||
RenderSliver? child = lastChild;
|
RenderSliver? child = lastChild;
|
||||||
while (child != null) {
|
while (child != null) {
|
||||||
yield child;
|
yield child;
|
||||||
child = childBefore(child);
|
child = childBefore(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Iterable<RenderSliver> get childrenInHitTestOrder sync* {
|
||||||
|
RenderSliver? child = firstChild;
|
||||||
|
while (child != null) {
|
||||||
|
yield child;
|
||||||
|
child = childAfter(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1746,6 +1746,49 @@ void main() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('Viewport childrenInPaintOrder control test', () {
|
||||||
|
test('RenderViewport', () async {
|
||||||
|
final List<RenderSliver> children = <RenderSliver>[
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
];
|
||||||
|
|
||||||
|
final RenderViewport renderViewport = RenderViewport(
|
||||||
|
crossAxisDirection: AxisDirection.right,
|
||||||
|
offset: ViewportOffset.zero(),
|
||||||
|
children: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Children should be painted in reverse order to the list given
|
||||||
|
expect(renderViewport.childrenInPaintOrder, equals(children.reversed));
|
||||||
|
// childrenInPaintOrder should be reverse of childrenInHitTestOrder
|
||||||
|
expect(renderViewport.childrenInPaintOrder,
|
||||||
|
equals(renderViewport.childrenInHitTestOrder.toList().reversed));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('RenderShrinkWrappingViewport', () async {
|
||||||
|
final List<RenderSliver> children = <RenderSliver>[
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
RenderSliverToBoxAdapter(),
|
||||||
|
];
|
||||||
|
|
||||||
|
final RenderShrinkWrappingViewport renderViewport =
|
||||||
|
RenderShrinkWrappingViewport(
|
||||||
|
crossAxisDirection: AxisDirection.right,
|
||||||
|
offset: ViewportOffset.zero(),
|
||||||
|
children: children,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Children should be painted in reverse order to the list given
|
||||||
|
expect(renderViewport.childrenInPaintOrder, equals(children.reversed));
|
||||||
|
// childrenInPaintOrder should be reverse of childrenInHitTestOrder
|
||||||
|
expect(renderViewport.childrenInPaintOrder,
|
||||||
|
equals(renderViewport.childrenInHitTestOrder.toList().reversed));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
testWidgets('Handles infinite constraints when TargetPlatform is iOS or macOS', (WidgetTester tester) async {
|
testWidgets('Handles infinite constraints when TargetPlatform is iOS or macOS', (WidgetTester tester) async {
|
||||||
// regression test for https://github.com/flutter/flutter/issues/45866
|
// regression test for https://github.com/flutter/flutter/issues/45866
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user