whereRenderObjectProp<T, R extends RenderObject> method

  1. @useResult
WidgetSelector<W> whereRenderObjectProp<T, R extends RenderObject>(
  1. NamedRenderObjectProp<R, T> prop,
  2. bool match(
    1. T value
    )
)

Creates a filter for the render objects of the discovered widgets based on a specified property. This filter is applied when the WidgetSelector is snapshotted.

Useful for selecting widgets based on specific properties of their render objects. Provide a NamedRenderObjectProp and a matching function.

Example usage:

spotSingle<Checkbox>()
  .whereRenderObjectProp<double, RenderBox>(
    prop: renderObjectProp('opacity', (ro) => ro.opacity),
    match: (opacity) => opacity > 0.5,
  ).existsOnce();

Implementation

@useResult
WidgetSelector<W> whereRenderObjectProp<T, R extends RenderObject>(
  NamedRenderObjectProp<R, T> prop,
  bool Function(T value) match,
) {
  return self!.addStage(
    PredicateFilter(
      predicate: (Element element) {
        final renderObject = element.renderObject;
        if (renderObject is R) {
          final value = prop.get(renderObject);
          return match(value);
        }
        return false;
      },
      description: prop.name,
    ),
  );
}