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

PDF Viewer rebuilds every time setState is called #64

Open
jayaike opened this issue Mar 19, 2020 · 2 comments
Open

PDF Viewer rebuilds every time setState is called #64

jayaike opened this issue Mar 19, 2020 · 2 comments

Comments

@jayaike
Copy link

jayaike commented Mar 19, 2020

Whenever I call setState in the widget, the PDF Viewer rebuilds causing it to load all over again. How can I prevent this?

@jayaike
Copy link
Author

jayaike commented Mar 19, 2020

Sometimes I get this error

I/flutter ( 9732): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
I/flutter ( 9732): The following assertion was thrown by an image listener:
I/flutter ( 9732): setState() called after dispose(): _PDFPageState#f9d49(lifecycle state: defunct, not mounted)
I/flutter ( 9732): This error happens if you call setState() on a State object for a widget that no longer appears in
I/flutter ( 9732): the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error
I/flutter ( 9732): can occur when code calls setState() from a timer or an animation callback.
I/flutter ( 9732): The preferred solution is to cancel the timer or stop listening to the animation in the dispose()
I/flutter ( 9732): callback. Another solution is to check the "mounted" property of this object before calling
I/flutter ( 9732): setState() to ensure the object is still in the tree.
I/flutter ( 9732): This error might indicate a memory leak if setState() is being called because another object is
I/flutter ( 9732): retaining a reference to this State object after it has been removed from the tree. To avoid memory
I/flutter ( 9732): leaks, consider breaking the reference to this object during dispose().
I/flutter ( 9732):
I/flutter ( 9732): When the exception was thrown, this was the stack:
I/flutter ( 9732): #0      State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1112:9)
I/flutter ( 9732): #1      State.setState (package:flutter/src/widgets/framework.dart:1147:6)
I/flutter ( 9732): #2      _PDFPageState._repaint.<anonymous closure> (package:flutter_plugin_pdf_viewer/src/page.dart:37:28)
I/flutter ( 9732): #3      ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:407:18)
I/flutter ( 9732): #4      MultiFrameImageStreamCompleter._emitFrame (package:flutter/src/painting/image_stream.dart:709:5)
I/flutter ( 9732): #5      MultiFrameImageStreamCompleter._decodeNextFrameAndSchedule (package:flutter/src/painting/image_stream.dart:694:7)
I/flutter ( 9732): <asynchronous suspension>
I/flutter ( 9732): #6      MultiFrameImageStreamCompleter._handleCodecReady (package:flutter/src/painting/image_stream.dart:644:7)
I/flutter ( 9732): #15     FileImage._loadAsync (package:flutter/src/painting/image_provider.dart)
I/flutter ( 9732): <asynchronous suspension>
I/flutter ( 9732): #16     FileImage.load (package:flutter/src/painting/image_provider.dart:638:14)
I/flutter ( 9732): #17     ImageProvider.resolve.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:327:17)
I/flutter ( 9732): #18     ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:160:22)
I/flutter ( 9732): #19     ImageProvider.resolve.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:325:84)
I/flutter ( 9732): #20     SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:38:29)
I/flutter ( 9732): #21     ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:323:11)
I/flutter ( 9732): #25     ImageProvider.resolve (package:flutter/src/painting/image_provider.dart:315:16)
I/flutter ( 9732): #26     _PDFPageState._repaint (package:flutter_plugin_pdf_viewer/src/page.dart:35:31)
I/flutter ( 9732): #27     _PDFPageState.didChangeDependencies (package:flutter_plugin_pdf_viewer/src/page.dart:22:5)
I/flutter ( 9732): #28     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4376:12)
I/flutter ( 9732): #29     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter ( 9732): #30     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter ( 9732): #31     Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter ( 9732): #32     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5219:32)
I/flutter ( 9732): #33     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5561:17)
I/flutter ( 9732): #34     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #35     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #36     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #37     StatelessElement.update (package:flutter/src/widgets/framework.dart:4298:5)
I/flutter ( 9732): #38     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #39     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #40     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #41     ProxyElement.update (package:flutter/src/widgets/framework.dart:4557:5)
I/flutter ( 9732): #42     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #43     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #44     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #45     ProxyElement.update (package:flutter/src/widgets/framework.dart:4557:5)
I/flutter ( 9732): #46     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #47     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5161:32)
I/flutter ( 9732): #48     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5561:17)
I/flutter ( 9732): #49     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #50     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #51     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #52     StatefulElement.update (package:flutter/src/widgets/framework.dart:4413:5)
I/flutter ( 9732): #53     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #54     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #55     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #56     ProxyElement.update (package:flutter/src/widgets/framework.dart:4557:5)
I/flutter ( 9732): #57     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #58     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #59     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #60     StatefulElement.update (package:flutter/src/widgets/framework.dart:4413:5)
I/flutter ( 9732): #61     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #62     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5452:14)
I/flutter ( 9732): #63     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #64     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #65     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #66     StatelessElement.update (package:flutter/src/widgets/framework.dart:4298:5)
I/flutter ( 9732): #67     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #68     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5452:14)
I/flutter ( 9732): #69     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #70     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #71     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #72     StatefulElement.update (package:flutter/src/widgets/framework.dart:4413:5)
I/flutter ( 9732): #73     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #74     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #75     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #76     StatefulElement.update (package:flutter/src/widgets/framework.dart:4413:5)
I/flutter ( 9732): #77     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #78     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #79     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #80     ProxyElement.update (package:flutter/src/widgets/framework.dart:4557:5)
I/flutter ( 9732): #81     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #82     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #83     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #84     ProxyElement.update (package:flutter/src/widgets/framework.dart:4557:5)
I/flutter ( 9732): #85     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #86     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #87     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #88     StatefulElement.update (package:flutter/src/widgets/framework.dart:4413:5)
I/flutter ( 9732): #89     Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15)
I/flutter ( 9732): #90     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter ( 9732): #91     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter ( 9732): #92     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2432:33)
I/flutter ( 9732): #93     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:773:20)
I/flutter ( 9732): #94     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
I/flutter ( 9732): #95     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15)
I/flutter ( 9732): #96     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1041:9)
I/flutter ( 9732): #97     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:957:5)
I/flutter ( 9732): #101    _invoke (dart:ui/hooks.dart:259:10)
I/flutter ( 9732): #102    _drawFrame (dart:ui/hooks.dart:217:3)
I/flutter ( 9732): (elided 14 frames from package dart:async and package dart:async-patch)
I/flutter ( 9732): ════════════════════════════════════════════════════════════════════════════════════════════════════

@jawadsahil
Copy link

I think this is by design and setState is used for the same reason that you want to rebuild the widget. It is not issue with the pdf viewer, but flutter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants