matchWidgetValue method

Future<Widget> matchWidgetValue(
  1. dynamic selectorDyn,
  2. Matcher matcher, {
  3. bool scrollIfMissing = true,
  4. bool ignoreUnderWidget = false,
  5. String extractType = AFExtractWidgetAction.extractPrimary,
  6. int extraFrames = 0,
})

Implementation

Future<Widget> matchWidgetValue(dynamic selectorDyn, ft.Matcher matcher, { bool scrollIfMissing = true, bool ignoreUnderWidget = false, String extractType = AFExtractWidgetAction.extractPrimary, int extraFrames = 0 }) async {
  final elems = await findElementsFor(selectorDyn, ignoreUnderWidget: ignoreUnderWidget, shouldScroll: scrollIfMissing);
  if(elems.length != 1) {
    throw AFException("matchWidgetValue expects $selectorDyn to match exactly one widget, found ${elems.length}");
  }

  final elem = elems.first;
  final selectable = AFibF.g.screenTests.findExtractor(extractType, elem);
  if(selectable == null) {
    throw AFException("No AFSelectedWidgetTest found for ${elem.widget.runtimeType}, you can register one using AFScreenTests.registerSelectable");
  }

  final selector = AFWidgetSelector.createSelector(activeSelectorPath, selectorDyn);
  final value = selectable.extract(extractType, selector, elem);
  this.expect(value, matcher, extraFrames: extraFrames+1);
  return elem.widget;
}