Do not return partial semantics from tester.getSemantics (#60367)
This commit is contained in:
parent
aa0382e95d
commit
769468298b
@ -997,6 +997,11 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker
|
||||
/// The ancestor's semantic data will include the child's as well as
|
||||
/// other nodes that have been merged together.
|
||||
///
|
||||
/// If the [SemanticsNode] of the object identified by the finder is
|
||||
/// force-merged into an ancestor (e.g. via the [MergeSemantics] widget)
|
||||
/// the node into which it is merged is returned. That node will include
|
||||
/// all the semantics information of the nodes merged into it.
|
||||
///
|
||||
/// Will throw a [StateError] if the finder returns more than one element or
|
||||
/// if no semantics are found or are not enabled.
|
||||
SemanticsNode getSemantics(Finder finder) {
|
||||
@ -1012,7 +1017,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker
|
||||
final Element element = candidates.single;
|
||||
RenderObject renderObject = element.findRenderObject();
|
||||
SemanticsNode result = renderObject.debugSemantics;
|
||||
while (renderObject != null && result == null) {
|
||||
while (renderObject != null && (result == null || result.isMergedIntoParent)) {
|
||||
renderObject = renderObject?.parent as RenderObject;
|
||||
result = renderObject?.debugSemantics;
|
||||
}
|
||||
|
@ -127,6 +127,34 @@ void main() {
|
||||
expect(semantics.label, 'A\nB\nC');
|
||||
semanticsHandle.dispose();
|
||||
});
|
||||
|
||||
testWidgets('Does not return partial semantics', (WidgetTester tester) async {
|
||||
final SemanticsHandle semanticsHandle = tester.ensureSemantics();
|
||||
final Key key = UniqueKey();
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: MergeSemantics(
|
||||
child: Semantics(
|
||||
container: true,
|
||||
label: 'A',
|
||||
child: Semantics(
|
||||
container: true,
|
||||
key: key,
|
||||
label: 'B',
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final SemanticsNode node = tester.getSemantics(find.byKey(key));
|
||||
final SemanticsData semantics = node.getSemanticsData();
|
||||
expect(semantics.label, 'A\nB');
|
||||
semanticsHandle.dispose();
|
||||
});
|
||||
});
|
||||
|
||||
group('ensureVisible', () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user