flutter报错Cannot hit test a render box that has never been laid out

发布时间:2024年01月16日

出现这个问题的原因可能是因为你把一个ListView或者GridView放到了一个没有设置大小的容器里面导致的,所以意思是不能渲染那一个没有布局过的容器。我这里遇到的错误是因为我把GridView放到了一个Container里面,并且我没有设置Container宽高。

就导致了那个错误:

======== Exception caught by gestures library ======================================================
The following assertion was thrown while handling a pointer data packet:
Cannot hit test a render box that has never been laid out.

The hitTest() method was called on this RenderBox: RenderStack#349bb NEEDS-LAYOUT NEEDS-PAINT
... ?parentData: offset=Offset(0.0, 0.0); id=_ScaffoldSlot.floatingActionButton
... ?constraints: MISSING
... ?size: MISSING
... ?alignment: Alignment.centerRight
... ?textDirection: ltr
... ?fit: loose
Unfortunately, this object's geometry is not known at this time, probably because it has never been laid out. This means it cannot be accurately hit-tested.

If you are trying to perform a hit test during the layout phase itself, make sure you only hit test nodes that have completed layout (e.g. the node's children, after their layout() method has been called).

When the exception was thrown, this was the stack:?
#0 ? ? ?RenderBox.hitTest.<anonymous closure> (package:flutter/src/rendering/box.dart:2442:11)
#1 ? ? ?RenderBox.hitTest (package:flutter/src/rendering/box.dart:2473:6)
#2 ? ? ?RenderBoxContainerDefaultsMixin.defaultHitTestChildren.<anonymous closure> (package:flutter/src/rendering/box.dart:2854:25)
#3 ? ? ?BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:800:31)
#4 ? ? ?RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2849:33)
#5 ? ? ?RenderCustomMultiChildLayoutBox.hitTestChildren (package:flutter/src/rendering/custom_layout.dart:415:12)
#6 ? ? ?RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#7 ? ? ?RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#8 ? ? ?RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#9 ? ? ?RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#10 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#11 ? ? RenderPhysicalModel.hitTest (package:flutter/src/rendering/proxy_box.dart:1990:18)
#12 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#13 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#14 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#15 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#16 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#17 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#18 ? ? RenderIgnorePointer.hitTest (package:flutter/src/rendering/proxy_box.dart:3609:31)
#19 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#20 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#21 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#22 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#23 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#24 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#25 ? ? RenderOffstage.hitTest (package:flutter/src/rendering/proxy_box.dart:3738:31)
#26 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#27 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#28 ? ? _RenderTheaterMixin.hitTestChildren.childHitTest (package:flutter/src/widgets/overlay.dart:856:81)
#29 ? ? BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:800:31)
#30 ? ? _RenderTheaterMixin.hitTestChildren (package:flutter/src/widgets/overlay.dart:857:22)
#31 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#32 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#33 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#34 ? ? RenderAbsorbPointer.hitTest (package:flutter/src/rendering/proxy_box.dart:3856:17)
#35 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#36 ? ? RenderProxyBoxWithHitTestBehavior.hitTest (package:flutter/src/rendering/proxy_box.dart:172:19)
#37 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#38 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#39 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#40 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#41 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#42 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#43 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#44 ? ? RenderTapRegionSurface.hitTest (package:flutter/src/widgets/tap_region.dart:213:28)
#45 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#46 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#47 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#48 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#49 ? ? RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:117:19)
#50 ? ? RenderBox.hitTest (package:flutter/src/rendering/box.dart:2475:11)
#51 ? ? RenderView.hitTest (package:flutter/src/rendering/view.dart:194:14)
#52 ? ? RendererBinding.hitTestInView (package:flutter/src/rendering/binding.dart:534:16)
#53 ? ? GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:384:7)
#54 ? ? GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:376:5)
#55 ? ? GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:323:7)
#56 ? ? GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:292:9)
#57 ? ? _invoke1 (dart:ui/hooks.dart:186:13)
#58 ? ? PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:424:7)
#59 ? ? _dispatchPointerDataPacket (dart:ui/hooks.dart:119:31)
====================================================================================================

======== Exception caught by gestures library ======================================================
The following assertion was thrown while handling a pointer data packet:
'package:flutter/src/rendering/mouse_tracker.dart': Failed assertion: line 205 pos 12: '!_debugDuringDeviceUpdate': is not true.


Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
? https://github.com/flutter/flutter/issues/new?template=2_bug.yml

When the exception was thrown, this was the stack:?
#2 ? ? ?MouseTracker._deviceUpdatePhase (package:flutter/src/rendering/mouse_tracker.dart:205:12)
#3 ? ? ?MouseTracker.updateWithEvent.<anonymous closure> (package:flutter/src/rendering/mouse_tracker.dart:328:7)
#4 ? ? ?MouseTracker._monitorMouseConnection (package:flutter/src/rendering/mouse_tracker.dart:193:9)
#5 ? ? ?MouseTracker.updateWithEvent (package:flutter/src/rendering/mouse_tracker.dart:327:5)
#6 ? ? ?RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:326:20)
#7 ? ? ?GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:413:7)
#8 ? ? ?GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:376:5)
#9 ? ? ?GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:323:7)
#10 ? ? GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:292:9)
#11 ? ? _invoke1 (dart:ui/hooks.dart:186:13)
#12 ? ? PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:424:7)
#13 ? ? _dispatchPointerDataPacket (dart:ui/hooks.dart:119:31)
(elided 2 frames from class _AssertionError)

?所以添加一个宽高就好了:

文章来源:https://blog.csdn.net/weixin_44786530/article/details/135627935
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。