Be more detailed in assert messages from _paintWithContext (#9409)
This commit is contained in:
parent
9a05e984d8
commit
115a04765e
@ -2167,9 +2167,47 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _paintWithContext(PaintingContext context, Offset offset) {
|
void _paintWithContext(PaintingContext context, Offset offset) {
|
||||||
assert(!_debugDoingThisPaint);
|
assert(() {
|
||||||
assert(!_needsLayout);
|
if (_debugDoingThisPaint) {
|
||||||
assert(!_needsCompositingBitsUpdate);
|
throw new FlutterError(
|
||||||
|
'Tried to paint a RenderObject reentrantly.\n'
|
||||||
|
'The following RenderObject was already being painted when it was '
|
||||||
|
'painted again:\n'
|
||||||
|
' ${toStringShallow("\n ")}\n'
|
||||||
|
'Since this typically indicates an infinite recursion, it is '
|
||||||
|
'disallowed.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (_needsLayout) {
|
||||||
|
throw new FlutterError(
|
||||||
|
'Tried to paint a RenderObject before it was laid out.\n'
|
||||||
|
'The following RenderObject was marked as dirty for layout at the '
|
||||||
|
'time that it was painted:\n'
|
||||||
|
' ${toStringShallow("\n ")}\n'
|
||||||
|
'A RenderObject that is still dirty for layout cannot be painted '
|
||||||
|
'because it does not know its own geometry yet.\n'
|
||||||
|
'Maybe one of the ancestors of this RenderObject was skipped '
|
||||||
|
'during the layout phase, but not skipped during the paint phase. '
|
||||||
|
'If the ancestor in question is below the nearest relayout boundary, '
|
||||||
|
'but is not below the nearest repaint boundary, that could cause '
|
||||||
|
'this error.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (_needsCompositingBitsUpdate) {
|
||||||
|
throw new FlutterError(
|
||||||
|
'Tried to paint a RenderObject before its compositing bits were '
|
||||||
|
'updated.\n'
|
||||||
|
'The following RenderObject was marked as having dirty compositing '
|
||||||
|
'bits at the time that it was painted:\n'
|
||||||
|
' ${toStringShallow("\n ")}\n'
|
||||||
|
'A RenderObject that still has dirty compositing bits cannot be '
|
||||||
|
'painted because this indicates that the tree has not yet been '
|
||||||
|
'properly configured for creating the layer tree.\n'
|
||||||
|
'This usually indicates an error in the Flutter framework itself.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
RenderObject debugLastActivePaint;
|
RenderObject debugLastActivePaint;
|
||||||
assert(() {
|
assert(() {
|
||||||
_debugDoingThisPaint = true;
|
_debugDoingThisPaint = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user