hasRenderObjectProp<T, R extends RenderObject> method
WidgetMatcher<W>
hasRenderObjectProp<T, R extends RenderObject>({
- required NamedRenderObjectProp<
R, T?> prop, - required MatchProp<
T> match,
Asserts that a render object's property meets a specific condition.
This method is useful for making assertions on properties within the render object of the widget.
Example usage:
final isComplexProp = renderObjectProp<bool?, RenderCustomPaint>(
'isComplex',
(r) => r.isComplex,
);
spot<Checkbox>().spot<CustomPaint>().existsOnce().hasRenderObjectProp(
prop: isComplexProp,
match: (it) => it.isFalse(),
);
Implementation
WidgetMatcher<W> hasRenderObjectProp<T, R extends RenderObject>({
required NamedRenderObjectProp<R, T?> prop,
required MatchProp<T> match,
}) {
void condition(Subject<Element> subject) {
final Subject<T> value = subject.context.nest<T?>(
() => ['RenderObject of $W', "with prop '${prop.name}'"],
(element) {
final value = getRenderObjectProp(prop);
return Extracted.value(value);
},
).hideNullability();
match(value);
}
final failure = softCheckHideNull(element, condition);
failure.throwPropertyCheckFailure(condition, element);
return this;
}