Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev2.0中往回翻页的时候存在一个BUG #22

Open
DouSN opened this issue Mar 16, 2022 · 13 comments
Open

dev2.0中往回翻页的时候存在一个BUG #22

DouSN opened this issue Mar 16, 2022 · 13 comments
Labels
bug Something isn't working

Comments

@DouSN
Copy link

DouSN commented Mar 16, 2022

点击阅读书籍后翻到第三章,再往回翻,从第二章第一页往回翻会直接回到第一章的第一页,请问这个问题怎么解决?

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 16, 2022

额,一个低级错误……因为是开发阶段……有些地方改坏了……

这个原因其实很简单……没把前一章的pageIndex设置为最后一页……

之前把这个值设置为99999999(总之就是一个特别大的值,小说章节页达不到的那种程度),然后计算章节内多少页之后,重新设置一下当前PageIndex , 方法是 min(设置的pageIndex,当前章节index),后来觉得这段代码好TM不优雅……就删掉了准备重写……然后忘了这块了……不该提交这部分的修改的……

这样造成的后果就是,第三章翻回第二章的时候,会去预加载第一章的内容,然后因为上面的逻辑被删掉了,所以默认pageIndex为0而不是最后一页……表现结果就是你说的那样

@lwlizhe lwlizhe added the bug Something isn't working label Mar 16, 2022
@DouSN
Copy link
Author

DouSN commented Mar 17, 2022

感谢回复,再请教一个问题:将翻页方式从仿真动态切换为覆盖的时候,章节之内的页面翻动是切换成功了,章节之间翻页就会出现错误,请问是什么原因GetBuilder<NovelContentChapterViewModel>( tag: novelId, builder: (_) { return PowerListView.builder( physics: PageScrollPhysics(), controller: _.scrollType == 0 ? PowerListScrollSimulationController() : PowerListPageScrollController(), addRepaintBoundaries: _.scrollType == 0 ? false : true, scrollDirection: Axis.horizontal, layoutManager: _.scrollType == 0 ? PowerListSimulationTurnLayoutManager() : PowerListCoverLayoutManager(), debugTag: 'outerParent', itemBuilder: (BuildContext context, int _index) { return NovelListChapterItem( novelChapterInfo: chapterList[_index], currentChapterIndex: initialPageIndex, ); // return buildTestContentItem(constraints, _index); }, itemCount: chapterList.length, ); })

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

额,报错信息是什么?现在乍看看不出啥毛病来……

@DouSN
Copy link
Author

DouSN commented Mar 17, 2022

如果从仿真切换到覆盖就会报错,报错如下:
`══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following message was thrown during paint():
Object has been disposed.

The relevant error-causing widget was:
PowerSliverFillViewportRenderObjectWidget
PowerSliverFillViewportRenderObjectWidget:file:///Users/apple/Downloads/flutter_novel-dev_2.0/lib/widget/scroll/power_scroll_view.dart:124:14

When the exception was thrown, this was the stack:
#0 Canvas.restore (dart:ui/painting.dart:4258:41)
#1 SimulationTurnPagePainterHelper.drawBottomCanvasArea
(package:flutter_novel/reader/layout/simulation/helper/power_list_simulation_helper.dart:267:12)
#2 SimulationTurnPagePainterHelper.draw (package:flutter_novel/reader/layout/simulation/helper/power_list_simulation_helper.dart:82:7)
#3 PowerListSimulationTurnLayoutManager.paintAnimationPage
(package:flutter_novel/reader/layout/simulation/power_list_simulation_layout_manager.dart:126:12)
#4 PowerListSimulationTurnLayoutManager.onPaint (package:flutter_novel/reader/layout/simulation/power_list_simulation_layout_manager.dart:41:11)
#5 PowerRenderSliverFillViewport.paint (package:flutter_novel/widget/scroll/sliver/power_sliver_fill.dart:42:19)
#6 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#7 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#8 RenderSliverEdgeInsetsPadding.paint (package:flutter/src/rendering/sliver_padding.dart:274:15)
#9 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#10 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#11 RenderViewportBase._paintContents (package:flutter/src/rendering/viewport.dart:660:17)
#12 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#13 PaintingContext.pushClipRect (package:flutter/src/rendering/object.dart:443:7)
#14 RenderViewportBase.paint (package:flutter/src/rendering/viewport.dart:635:38)
#15 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#16 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#17 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#18 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#19 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#20 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#21 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#22 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#23 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#24 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#25 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#26 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#27 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#28 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#29 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#30 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#31 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#32 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#33 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#34 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#35 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#36 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#37 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#38 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#39 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#40 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#41 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15)
#42 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5)
#43 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#44 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#45 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#46 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:555:11)
#47 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#48 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#49 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#50 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1929:15)
#51 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#52 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#53 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#54 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#55 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#56 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#57 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#58 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#59 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#60 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#61 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#62 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15)
#63 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:629:5)
#64 RenderStack.paint (package:flutter/src/rendering/stack.dart:645:7)
#65 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#66 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#67 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15)
#68 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5)
#69 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#70 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#71 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#72 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:555:11)
#73 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#74 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#75 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#76 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1929:15)
#77 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#78 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#79 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#80 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#81 PaintingContext.pushOpacity (package:flutter/src/rendering/object.dart:608:5)
#82 RenderAnimatedOpacityMixin.paint (package:flutter/src/rendering/proxy_box.dart:1008:23)
#83 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#84 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#85 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#86 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7)
#87 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:141:11)
#88 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5)
#89 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:995:29)
#90 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:499:19)
#91 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13)
#92 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#93 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#94 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#95 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
#99 _invoke (dart:ui/hooks.dart:151:10)
#100 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#101 _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)`
如果是从覆盖切换到翻页就不会报错,但是章节之间的切换方式还是覆盖

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

如果从仿真切换到覆盖就会报错,报错如下: `══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ The following message was thrown during paint(): Object has been disposed.

The relevant error-causing widget was: PowerSliverFillViewportRenderObjectWidget PowerSliverFillViewportRenderObjectWidget:file:///Users/apple/Downloads/flutter_novel-dev_2.0/lib/widget/scroll/power_scroll_view.dart:124:14

When the exception was thrown, this was the stack: #0 Canvas.restore (dart:ui/painting.dart:4258:41) #1 SimulationTurnPagePainterHelper.drawBottomCanvasArea (package:flutter_novel/reader/layout/simulation/helper/power_list_simulation_helper.dart:267:12) #2 SimulationTurnPagePainterHelper.draw (package:flutter_novel/reader/layout/simulation/helper/power_list_simulation_helper.dart:82:7) #3 PowerListSimulationTurnLayoutManager.paintAnimationPage (package:flutter_novel/reader/layout/simulation/power_list_simulation_layout_manager.dart:126:12) #4 PowerListSimulationTurnLayoutManager.onPaint (package:flutter_novel/reader/layout/simulation/power_list_simulation_layout_manager.dart:41:11) #5 PowerRenderSliverFillViewport.paint (package:flutter_novel/widget/scroll/sliver/power_sliver_fill.dart:42:19) #6 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #7 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #8 RenderSliverEdgeInsetsPadding.paint (package:flutter/src/rendering/sliver_padding.dart:274:15) #9 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #10 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #11 RenderViewportBase._paintContents (package:flutter/src/rendering/viewport.dart:660:17) #12 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12) #13 PaintingContext.pushClipRect (package:flutter/src/rendering/object.dart:443:7) #14 RenderViewportBase.paint (package:flutter/src/rendering/viewport.dart:635:38) #15 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #16 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #17 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #18 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #19 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #20 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #21 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #22 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #23 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #24 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #25 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #26 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #27 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #28 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #29 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #30 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #31 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #32 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #33 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #34 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #35 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #36 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #37 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #38 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #39 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #40 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #41 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15) #42 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5) #43 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #44 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #45 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #46 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:555:11) #47 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #48 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #49 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12) #50 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1929:15) #51 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #52 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #53 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #54 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #55 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #56 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #57 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #58 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #59 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #60 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #61 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #62 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15) #63 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:629:5) #64 RenderStack.paint (package:flutter/src/rendering/stack.dart:645:7) #65 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #66 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #67 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2847:15) #68 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5) #69 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #70 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #71 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #72 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:555:11) #73 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #74 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #75 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12) #76 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1929:15) #77 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #78 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #79 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #80 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12) #81 PaintingContext.pushOpacity (package:flutter/src/rendering/object.dart:608:5) #82 RenderAnimatedOpacityMixin.paint (package:flutter/src/rendering/proxy_box.dart:1008:23) #83 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #84 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13) #85 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15) #86 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2449:7) #87 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:141:11) #88 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart💯5) #89 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:995:29) #90 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:499:19) #91 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13) #92 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5) #93 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15) #94 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9) #95 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5) #99 _invoke (dart:ui/hooks.dart:151:10) #100 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5) #101 _drawFrame (dart:ui/hooks.dart:115:31) (elided 3 frames from dart:async)` 如果是从覆盖切换到翻页就不会报错,但是章节之间的切换方式还是覆盖

这个报错信息就是典型的repaintBoundary这块的问题……非常恶心,哇,当时差点被搞的心态搞崩……

咳咳回正题,一不留神回忆起了当时的艰苦岁月……结合最后那句,我现在盲猜并没有修改章节ListView外面包的ListView,所以章节切换还是覆盖,现在的结构可以这么说:

外面一个父ListView,里面放了数个子ListView,;子分别代表各个章节,里面在放的就是章节的内容;
总结一下就是 ListVIew(总体,承载章节List) -> ListView(章节内容,承载Page List) -> 一页展示的内容

所以先检查一下是不是外面的父ListView并没有保持跟里面的子ListView一个设置?

@DouSN
Copy link
Author

DouSN commented Mar 17, 2022

章节外面的controller也切换了
image

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

章节外面的controller也切换了 image

卧槽,这就有点麻烦了,我加上这块的功能试下哈,顺便问下,如果不切换,在代码层面分别写死成覆盖和仿真翻页模式会有问题么

如果通过代码层面写死而非切换的方式没有问题的话,大概率在RepaintBoudary没做更改或者Layer树没有更新,我看下是不是这块的问题

@DouSN
Copy link
Author

DouSN commented Mar 17, 2022

直接代码切换的话是没有问题

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

直接代码切换的话是没有问题

那有些想法了,我研究一下,实在不行你先加个Key,内容是类型,看看这样能不能让RepaintBoudary重新读取配置重建一下,后续我修好这个问题我再@你哈

@DouSN
Copy link
Author

DouSN commented Mar 17, 2022

直接代码切换的话是没有问题

那有些想法了,我研究一下,实在不行你先加个Key,内容是类型,看看这样能不能让RepaintBoudary重新读取配置重建一下,后续我修好这个问题我再@你哈

好的 非常感谢,辛苦啦

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

直接代码切换的话是没有问题

那有些想法了,我研究一下,实在不行你先加个Key,内容是类型,看看这样能不能让RepaintBoudary重新读取配置重建一下,后续我修好这个问题我再@你哈

好的 非常感谢,辛苦啦

额,研究了下,确实是没build的原因,想了想,好像除了加Key之外也没别的方案,flutter底层就这么规定的……

加个ValueKey禁止其缓存Element,最后强制更新Layer树

image

@lwlizhe
Copy link
Owner

lwlizhe commented Mar 17, 2022

直接代码切换的话是没有问题

那有些想法了,我研究一下,实在不行你先加个Key,内容是类型,看看这样能不能让RepaintBoudary重新读取配置重建一下,后续我修好这个问题我再@你哈

好的 非常感谢,辛苦啦

额,研究了下,确实是没build的原因,想了想,好像除了加Key之外也没别的方案,flutter底层就这么规定的……

加个ValueKey禁止其缓存Element,最后强制更新Layer树

image

又想了想……好像itemBuilder那块加不加key好像影响不大,这个Key应该放到novel_reader_list_item_of_chapter 里面的那个ListView那块?总之加几个ValueKey影响不大,要不几个关键点都加上?

@DouSN
Copy link
Author

DouSN commented Mar 18, 2022

直接代码切换的话是没有问题

那有些想法了,我研究一下,实在不行你先加个Key,内容是类型,看看这样能不能让RepaintBoudary重新读取配置重建一下,后续我修好这个问题我再@你哈

好的 非常感谢,辛苦啦

额,研究了下,确实是没build的原因,想了想,好像除了加Key之外也没别的方案,flutter底层就这么规定的……
加个ValueKey禁止其缓存Element,最后强制更新Layer树
image

又想了想……好像itemBuilder那块加不加key好像影响不大,这个Key应该放到novel_reader_list_item_of_chapter 里面的那个ListView那块?总之加几个ValueKey影响不大,要不几个关键点都加上?

非常感谢,只在外面加key就可以了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants