Closed SpanishOnion closed 3 years ago
动态更改 pinned header 高度,比如 初始高度为 100,更改为500后,立刻滑动列表,则会触发以下报错,如果继续滑动会不断抛出异常,导致滑动非常卡顿。
如果更改完500后,等待 1 秒再滑动列表,则不会报错,我怀疑在设置完高度后不是立即生效的,而是有一个过渡,如果在过渡时间内滑动列表则会导致报错。
错误日志:
I/flutter (18969): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter (18969): The following assertion was thrown during performLayout(): I/flutter (18969): 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: I/flutter (18969): line 696 pos 16: 'extra >= 0.0': is not true. I/flutter (18969): I/flutter (18969): The relevant error-causing widget was: I/flutter (18969): NestedScrollViewViewport I/flutter (18969): file:///D:/office/flutter/.pub-cache/hosted/pub.flutter-io.cn/extended_nested_scroll_view-0.4.0/lib/src/old_extended_nested_scroll_view.dart:416:12 I/flutter (18969): I/flutter (18969): When the exception was thrown, this was the stack: I/flutter (18969): #2 _NestedScrollCoordinator._getMetrics (package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart:696:16) I/flutter (18969): #3 _NestedScrollCoordinator.createOuterBallisticScrollActivity (package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart:644 :42) I/flutter (18969): #4 _NestedOuterBallisticScrollActivity.applyNewDimensions (package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart:1407:21) I/flutter (18969): #5 ScrollPosition.applyNewDimensions (package:flutter/src/widgets/scroll_position.dart:524:14) I/flutter (18969): #6 _NestedScrollPosition.applyNewDimensions (package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart:1322:11) I/flutter (18969): #7 ScrollPosition.applyContentDimensions (package:flutter/src/widgets/scroll_position.dart:495:7) I/flutter (18969): #8 _NestedScrollPosition.applyContentDimensions (package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart:1129:18) I/flutter (18969): #9 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1357:20) I/flutter (18969): #10 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1630:7) I/flutter (18969): #11 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887:18) I/flutter (18969): #12 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:402:19) I/flutter (18969): #13 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:13) I/flutter (18969): #14 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5) I/flutter (18969): #15 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15) I/flutter (18969): #16 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9) I/flutter (18969): #17 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:968:5) I/flutter (18969): #21 _invoke (dart:ui/hooks.dart:261:10) I/flutter (18969): #22 _drawFrame (dart:ui/hooks.dart:219:3) I/flutter (18969): (elided 5 frames from class _AssertionError and dart:async) I/flutter (18969): I/flutter (18969): The following RenderObject was being processed when the exception was fired: RenderNestedScrollViewViewport#543b9 NEEDS-LAYOUT NEEDS-PAINT: I/flutter (18969): needs compositing I/flutter (18969): creator: NestedScrollViewViewport ← IgnorePointer-[GlobalKey#d268c] ← Semantics ← _PointerListener ← I/flutter (18969): Listener ← _GestureSemantics ← I/flutter (18969): RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#859ed] ← _PointerListener ← Listener I/flutter (18969): ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#a3f14] ← RepaintBoundary ← ⋯ I/flutter (18969): parentData: <none> (can use size) I/flutter (18969): constraints: BoxConstraints(0.0<=w<=360.0, 0.0<=h<=751.7) I/flutter (18969): layer: OffsetLayer#e6444 I/flutter (18969): size: Size(360.0, 751.7) I/flutter (18969): axisDirection: down I/flutter (18969): crossAxisDirection: right I/flutter (18969): offset: _NestedScrollPosition#36a6d(outer, offset: 324.1, range: 0.0..0.0, viewport: 751.7) I/flutter (18969): anchor: 0.0 I/flutter (18969): handle: SliverOverlapAbsorberHandle(null, orphan) I/flutter (18969): This RenderObject had the following descendants (showing up to depth 5): I/flutter (18969): center child: _RenderSliverPinnedPersistentHeaderForWidgets#c6939 relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flutter (18969): child: RenderSemanticsAnnotations#3cfb1 relayoutBoundary=up2 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flutter (18969): child: RenderAnnotatedRegion<SystemUiOverlayStyle>#6113e relayoutBoundary=up3 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flutter (18969): child: RenderPhysicalModel#124c0 relayoutBoundary=up4 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flutter (18969): child: _RenderInkFeatures#9d69f relayoutBoundary=up5 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flutter (18969): child 1: RenderSliverFillRemainingWithScrollable#ba2ba relayoutBoundary=up1 NEEDS-PAINT I/flutter (18969): child: RenderStack#52f1d NEEDS-PAINT I/flutter (18969): child 1: RenderFlex#80e0d relayoutBoundary=up1 NEEDS-PAINT I/flutter (18969): child 1: RenderDecoratedBox#acb5c relayoutBoundary=up2 I/flutter (18969): child: RenderPadding#a6c84 relayoutBoundary=up3 I/flutter (18969): child 2: RenderRepaintBoundary#e0363 relayoutBoundary=up2 NEEDS-PAINT I/flutter (18969): child: RenderCustomPaint#71b77 relayoutBoundary=up3 NEEDS-PAINT I/flutter (18969): child 2: _RenderLayoutBuilder#fd219 relayoutBoundary=up1 NEEDS-PAINT I/flutter (18969): child: RenderConstrainedBox#432d0 relayoutBoundary=up2 NEEDS-PAINT I/flutter (18969): ════════════════════════════════════════════════════════════════════════════════════════════════════ I/flutter (18969): Another exception was thrown: 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: line 725 pos 16: 'ext ra <= 0.0': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 525 pos 12: '_drag == null': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 534 pos 12: '_drag == null': is not true. W/HiTouch_PressGestureDetector(18969): Touch pointer move a lot. The moving distance of X is:56.0, limit is:60The moving distance of Y is:85.0, limit is:60 I/flutter (18969): Another exception was thrown: 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: line 725 pos 16: 'ext ra <= 0.0': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 525 pos 12: '_drag == null': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 534 pos 12: '_drag == null': is not true. W/HiTouch_PressGestureDetector(18969): Touch pointer move a lot. The moving distance of X is:11.0, limit is:60The moving distance of Y is:74.0, limit is:60 I/flutter (18969): Another exception was thrown: 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: line 696 pos 16: 'ext ra >= 0.0': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 525 pos 12: '_drag == null': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 534 pos 12: '_drag == null': is not true. W/HiTouch_PressGestureDetector(18969): Touch pointer move a lot. The moving distance of X is:71.0, limit is:60The moving distance of Y is:107.0, limit is:60 I/flutter (18969): Another exception was thrown: 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: line 725 pos 16: 'ext ra <= 0.0': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 525 pos 12: '_drag == null': is not true. I/flutter (18969): Another exception was thrown: 'package:flutter/src/widgets/scrollable.dart': Failed assertion: line 534 pos 12: '_drag == null': is not true. W/HiTouch_PressGestureDetector(18969): Touch pointer move a lot. The moving distance of X is:51.0, limit is:60The moving distance of Y is:85.0, limit is:60 I/flutter (18969): Another exception was thrown: 'package:extended_nested_scroll_view/src/old_extended_nested_scroll_view.dart': Failed assertion: line 725 pos 16: 'ext ra <= 0.0': is not true.
你滚动的时候去设置。一样会报错,这个感觉很正常啊,本来就不该在滚动的过程中动态改变这个值,我这边会报错,但是不影响ui呢
动态更改 pinned header 高度,比如 初始高度为 100,更改为500后,立刻滑动列表,则会触发以下报错,如果继续滑动会不断抛出异常,导致滑动非常卡顿。
如果更改完500后,等待 1 秒再滑动列表,则不会报错,我怀疑在设置完高度后不是立即生效的,而是有一个过渡,如果在过渡时间内滑动列表则会导致报错。
错误日志: