applyWidgetValue method

  1. @override
Future<void> applyWidgetValue(
  1. dynamic selectorDyn,
  2. dynamic value,
  3. String applyType, {
  4. AFUIVerifyDelegate? verify,
  5. int maxWidgets = 1,
  6. int extraFrames = 0,
  7. bool ignoreUnderWidget = false,
})
override

Implementation

@override
Future<void> applyWidgetValue(dynamic selectorDyn, dynamic value, String applyType, {
    AFUIVerifyDelegate? verify,
    int maxWidgets = 1,
    int extraFrames = 0,
    bool ignoreUnderWidget = false,
  }) async {
  AFibF.g.testOnlyClearRecentActions();
  final selector = AFWidgetSelector.createSelector(null, selectorDyn);
  final elems = await findElementsFor(selector, ignoreUnderWidget: ignoreUnderWidget, shouldScroll: true);
  if(maxWidgets > 0 && maxWidgets < elems.length) {
    throw AFException("Expected at most $maxWidgets widget for selector $selector, found ${elems.length} widgets");
  }
  if(elems.isEmpty) {
    throw AFException("applyWidgetValue, no widget found with selector $selectorDyn");
  }


  final elem = elems.first;
  final tapable = AFibF.g.screenTests.findApplicator(applyType, elem);
  if(tapable == null) {
    throw AFException("No AFApplyWidgetAction found for ${elem.widget.runtimeType}, you can register one using AFScreenTests.registerApplicator");
  }
  tapable.apply(applyType, selector, elem, value);

  final verifyUIContext = AFUIVerifyContext(
    actions: AFibF.g.testOnlyRecentActions,
    activeScreenId: activeScreenId,
    showResults: Map<AFScreenID, dynamic>.from(AFibF.g.testOnlyShowUIReturn),
  );

  if(verify != null) {
    verify(verifyUIContext);
  }

  await pauseForRender();
}