matchDirectChildrenOf method
Future<List<Widget> >
matchDirectChildrenOf(
- dynamic selector, {
- List<
AFWidgetID?> ? expectedIds, - bool shouldScroll = true,
- bool ignoreUnderWidget = false,
- AFFilterWidgetDelegate? filterWidgets,
Implementation
Future<List<Widget>> matchDirectChildrenOf(dynamic selector, { List<AFWidgetID?>? expectedIds, bool shouldScroll = true,
bool ignoreUnderWidget = false, AFFilterWidgetDelegate? filterWidgets }) async {
final elems = await findElementsFor(selector, ignoreUnderWidget: ignoreUnderWidget, shouldScroll: shouldScroll);
if(elems.isEmpty) {
throw AFException("Could not find element $selector");
}
if(elems.length > 1) {
throw AFException("matchDirectChildrenOf should refer to exactly one widget.");
}
final sel = AFWidgetSelector.createSelector(activeSelectorPath, selector);
final elem = elems.first;
final extractor = AFibF.g.screenTests.findExtractor(AFExtractWidgetAction.extractChildren, elem);
if(extractor == null) {
throw AFException("No children extractor for element $selector with widget type ${elem.widget.runtimeType}");
}
dynamic resultDyn = extractor.extract(AFExtractWidgetAction.extractChildren, sel, elem);
if(resultDyn is! List<Widget>) {
throw AFException("The extractor ${extractor.runtimeType} did not return a list of widget children");
}
var result = resultDyn;
if(filterWidgets != null) {
result = result.where((e) => filterWidgets(e) ).toList();
}
if(expectedIds != null) {
expectWidgetIds(result, expectedIds);
}
return result;
}