From 74483d42d9074ab718d0dd01d80a4ba07e98220b Mon Sep 17 00:00:00 2001 From: Sahil-Simform Date: Mon, 25 Nov 2024 16:01:41 +0530 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9BFixed=20null=20check=20issue?= =?UTF-8?q?=20in=20'RenderBox'=20at'`layout=5Foverlay.dart`(#464)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/src/layout_overlays.dart | 42 +++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/src/layout_overlays.dart b/lib/src/layout_overlays.dart index d8516b70..8277b387 100644 --- a/lib/src/layout_overlays.dart +++ b/lib/src/layout_overlays.dart @@ -65,22 +65,26 @@ class AnchoredOverlay extends StatelessWidget { overlayBuilder: (overlayContext) { // To calculate the "anchor" point we grab the render box of // our parent Container and then we find the center of that box. - final box = context.findRenderObject() as RenderBox; - - final topLeft = box.size.topLeft( - box.localToGlobal( - const Offset(0.0, 0.0), - ancestor: rootRenderObject, - ), - ); - final bottomRight = box.size.bottomRight( - box.localToGlobal( - const Offset(0.0, 0.0), - ancestor: rootRenderObject, - ), - ); - Rect anchorBounds; - anchorBounds = (topLeft.dx.isNaN || + final box = context.findRenderObject() as RenderBox?; + + // Handle null RenderBox safely. + final topLeft = box?.size.topLeft( + box.localToGlobal( + const Offset(0.0, 0.0), + ancestor: rootRenderObject, + ), + ) ?? + const Offset(0, 0); + final bottomRight = box?.size.bottomRight( + box.localToGlobal( + Offset.zero, + ancestor: rootRenderObject, + ), + ) ?? + Offset.zero; + + // Provide a default anchorBounds if box is null. + Rect anchorBounds = (topLeft.dx.isNaN || topLeft.dy.isNaN || bottomRight.dx.isNaN || bottomRight.dy.isNaN) @@ -91,7 +95,11 @@ class AnchoredOverlay extends StatelessWidget { bottomRight.dx, bottomRight.dy, ); - final anchorCenter = box.size.center(topLeft); + + // Calculate the anchor center or default to Offset.zero. + final anchorCenter = box?.size.center(topLeft) ?? Offset.zero; + + // Pass the anchor details to the overlay builder. return overlayBuilder!(overlayContext, anchorBounds, anchorCenter); }, child: child,