Revert "Revert "Fix _LateInitializationError for RenderObjectElement.renderObject (#70974)" (#73575)" (#73580)

This commit is contained in:
Michael Goderbauer 2021-01-08 12:49:04 -08:00 committed by GitHub
parent 5b503c7c93
commit 24d434d156
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 4 deletions

View File

@ -5463,8 +5463,8 @@ abstract class RenderObjectElement extends Element {
/// The underlying [RenderObject] for this element.
@override
RenderObject get renderObject => _renderObject;
late RenderObject _renderObject;
RenderObject get renderObject => _renderObject!;
RenderObject? _renderObject;
bool _debugDoingBuild = false;
@override
@ -5566,7 +5566,7 @@ abstract class RenderObjectElement extends Element {
void _debugUpdateRenderObjectOwner() {
assert(() {
_renderObject.debugCreator = DebugCreator(this);
renderObject.debugCreator = DebugCreator(this);
return true;
}());
}
@ -6058,7 +6058,7 @@ abstract class RenderObjectElement extends Element {
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties.add(DiagnosticsProperty<RenderObject>('renderObject', renderObject, defaultValue: null));
properties.add(DiagnosticsProperty<RenderObject>('renderObject', _renderObject, defaultValue: null));
}
}

View File

@ -1494,6 +1494,12 @@ void main() {
expect(GestureBinding.instance!.pointerRouter.debugGlobalRouteCount, pointerRouterCount);
expect(RawKeyboard.instance.keyEventHandler, same(rawKeyEventHandler));
});
testWidgets('Can access debugFillProperties without _LateInitializationError', (WidgetTester tester) async {
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
TestRenderObjectElement().debugFillProperties(builder);
expect(builder.properties.any((DiagnosticsNode property) => property.name == 'renderObject' && property.value == null), isTrue);
});
}
class _FakeFocusManager implements FocusManager {
@ -1837,3 +1843,7 @@ class FakeLeafRenderObject extends RenderBox {
size = constraints.biggest;
}
}
class TestRenderObjectElement extends RenderObjectElement {
TestRenderObjectElement() : super(Table());
}