Skip to content

Commit c243d83

Browse files
authored
Fix _LateInitializationError for RenderObjectElement.renderObject (flutter#70974)
1 parent 5bc725b commit c243d83

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

packages/flutter/lib/src/widgets/framework.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5463,8 +5463,8 @@ abstract class RenderObjectElement extends Element {
54635463

54645464
/// The underlying [RenderObject] for this element.
54655465
@override
5466-
RenderObject get renderObject => _renderObject;
5467-
late RenderObject _renderObject;
5466+
RenderObject get renderObject => _renderObject!;
5467+
RenderObject? _renderObject;
54685468

54695469
bool _debugDoingBuild = false;
54705470
@override
@@ -5566,7 +5566,7 @@ abstract class RenderObjectElement extends Element {
55665566

55675567
void _debugUpdateRenderObjectOwner() {
55685568
assert(() {
5569-
_renderObject.debugCreator = DebugCreator(this);
5569+
renderObject.debugCreator = DebugCreator(this);
55705570
return true;
55715571
}());
55725572
}
@@ -6058,7 +6058,7 @@ abstract class RenderObjectElement extends Element {
60586058
@override
60596059
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
60606060
super.debugFillProperties(properties);
6061-
properties.add(DiagnosticsProperty<RenderObject>('renderObject', renderObject, defaultValue: null));
6061+
properties.add(DiagnosticsProperty<RenderObject>('renderObject', _renderObject, defaultValue: null));
60626062
}
60636063
}
60646064

packages/flutter/test/widgets/framework_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,6 +1494,12 @@ void main() {
14941494
expect(GestureBinding.instance!.pointerRouter.debugGlobalRouteCount, pointerRouterCount);
14951495
expect(RawKeyboard.instance.keyEventHandler, same(rawKeyEventHandler));
14961496
});
1497+
1498+
testWidgets('Can access debugFillProperties without _LateInitializationError', (WidgetTester tester) async {
1499+
final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder();
1500+
TestRenderObjectElement().debugFillProperties(builder);
1501+
expect(builder.properties.any((DiagnosticsNode property) => property.name == 'renderObject' && property.value == null), isTrue);
1502+
});
14971503
}
14981504

14991505
class _FakeFocusManager implements FocusManager {
@@ -1837,3 +1843,7 @@ class FakeLeafRenderObject extends RenderBox {
18371843
size = constraints.biggest;
18381844
}
18391845
}
1846+
1847+
class TestRenderObjectElement extends RenderObjectElement {
1848+
TestRenderObjectElement() : super(Table());
1849+
}

0 commit comments

Comments
 (0)