Revert "Revert "Fix _LateInitializationError for RenderObjectElement.renderObject (#70974)" (#73575)" (#73580)
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 3978fc3..71b3bc7 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -5463,8 +5463,8 @@
/// 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 @@
void _debugUpdateRenderObjectOwner() {
assert(() {
- _renderObject.debugCreator = DebugCreator(this);
+ renderObject.debugCreator = DebugCreator(this);
return true;
}());
}
@@ -6058,7 +6058,7 @@
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
- properties.add(DiagnosticsProperty<RenderObject>('renderObject', renderObject, defaultValue: null));
+ properties.add(DiagnosticsProperty<RenderObject>('renderObject', _renderObject, defaultValue: null));
}
}
diff --git a/packages/flutter/test/widgets/framework_test.dart b/packages/flutter/test/widgets/framework_test.dart
index 7dc9e7e..9b8e7a1 100644
--- a/packages/flutter/test/widgets/framework_test.dart
+++ b/packages/flutter/test/widgets/framework_test.dart
@@ -1494,6 +1494,12 @@
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 @@
size = constraints.biggest;
}
}
+
+class TestRenderObjectElement extends RenderObjectElement {
+ TestRenderObjectElement() : super(Table());
+}