[flutter_test] perf: find.ancestor (#108868)
This commit is contained in:
parent
7270c48bd7
commit
80679f0b42
@ -923,7 +923,8 @@ class _DescendantFinder extends Finder {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Iterable<Element> apply(Iterable<Element> candidates) {
|
Iterable<Element> apply(Iterable<Element> candidates) {
|
||||||
return candidates.where((Element element) => descendant.evaluate().contains(element));
|
final Iterable<Element> descendants = descendant.evaluate();
|
||||||
|
return candidates.where((Element element) => descendants.contains(element));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -956,7 +957,8 @@ class _AncestorFinder extends Finder {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Iterable<Element> apply(Iterable<Element> candidates) {
|
Iterable<Element> apply(Iterable<Element> candidates) {
|
||||||
return candidates.where((Element element) => ancestor.evaluate().contains(element));
|
final Iterable<Element> ancestors = ancestor.evaluate();
|
||||||
|
return candidates.where((Element element) => ancestors.contains(element));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -361,6 +361,30 @@ void main() {
|
|||||||
matchRoot: true,
|
matchRoot: true,
|
||||||
), findsOneWidget);
|
), findsOneWidget);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWidgets('is fast in deep tree', (WidgetTester tester) async {
|
||||||
|
await tester.pumpWidget(
|
||||||
|
Directionality(
|
||||||
|
textDirection: TextDirection.ltr,
|
||||||
|
child: _deepWidgetTree(
|
||||||
|
depth: 1000,
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
_deepWidgetTree(
|
||||||
|
depth: 1000,
|
||||||
|
child: Column(children: fooBarTexts),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(find.ancestor(
|
||||||
|
of: find.text('bar'),
|
||||||
|
matching: find.byType(Row),
|
||||||
|
), findsOneWidget);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
group('pageBack', () {
|
group('pageBack', () {
|
||||||
@ -854,3 +878,12 @@ class _AlwaysRepaint extends CustomPainter {
|
|||||||
onPaint();
|
onPaint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Wraps [child] in [depth] layers of [SizedBox]
|
||||||
|
Widget _deepWidgetTree({required int depth, required Widget child}) {
|
||||||
|
Widget tree = child;
|
||||||
|
for (int i = 0; i < depth; i += 1) {
|
||||||
|
tree = SizedBox(child: tree);
|
||||||
|
}
|
||||||
|
return tree;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user