fluttercandies / extended_nested_scroll_view

extended nested scroll view to fix following issues. 1.pinned sliver header issue 2.inner scrollables in tabview sync issue 3.pull to refresh is not work. 4.do without ScrollController in NestedScrollView's body
MIT License
592 stars 119 forks source link

动态更改 pinned header 高度后立即滑动会出现报错,报错之后导致列表非常卡顿 #30

Closed SpanishOnion closed 3 years ago

SpanishOnion commented 4 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.
zmtzawqlp commented 4 years ago

你滚动的时候去设置。一样会报错,这个感觉很正常啊,本来就不该在滚动的过程中动态改变这个值,我这边会报错,但是不影响ui呢