From fcb3071936c923462b50d42076010c96b1783a8e Mon Sep 17 00:00:00 2001 From: Hixie Date: Fri, 26 Feb 2016 15:55:17 -0800 Subject: [PATCH] Fix crash in Block. This assert was overzealous. You can update a RawGestureDetector any time before the semantics phase, it doesn't have to only be during your child's layout. This is good because Block has additional PointerListeners between its GestureDetector and its Viewport. --- .../lib/src/widgets/gesture_detector.dart | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart index 756d4858cb..68d4eee987 100644 --- a/packages/flutter/lib/src/widgets/gesture_detector.dart +++ b/packages/flutter/lib/src/widgets/gesture_detector.dart @@ -279,22 +279,8 @@ class RawGestureDetectorState extends State { /// the gesture detector should be enabled. void replaceGestureRecognizers(Map gestures) { assert(() { - RenderObject renderObject = context.findRenderObject(); - if (!config.excludeFromSemantics) { - assert(renderObject is RenderSemanticsGestureHandler); - RenderSemanticsGestureHandler semanticsGestureHandler = renderObject; - renderObject = semanticsGestureHandler.child; - } - assert(renderObject is RenderPointerListener); - RenderPointerListener pointerListener = renderObject; - renderObject = pointerListener.child; - if (!renderObject.debugDoingThisLayout) { - throw new WidgetError( - 'replaceGestureRecognizers() can only be called during the layout phase of the GestureDetector\'s nearest descendant RenderObjectWidget.\n' - 'In this particular case, that is:\n' - ' $renderObject' - ); - } + if (!RenderObject.debugDoingLayout) + throw new WidgetError('replaceGestureRecognizers() can only be called during the layout phase.'); return true; }); _syncAll(gestures);