-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
I'm working with a package which is called palette_generator. I see an error when I run my app with a few line codes to use the package. I thought that the error might have caused by my code, but I couldn't figure it out. Finally, I tried to edit the source code of this package. Then, it worked without any error. However, I am not sure that the solution that I found is consistent. I'd like to share the issue and my solution in order to help other people and contribute the package.
The Issue
The error appears when I try to call the following function inside initState(). The function is the same with the one which is shown as an example in its documentation:
PaletteGenerator _paletteGenerator;
void initState() {
super.initState();
_updatePaletteGenerator(region);
}
Future<void> _updatePaletteGenerator(Rect newRegion) async {
paletteGenerator = await PaletteGenerator.fromImageProvider(
widget.image,
size: widget.imageSize,
region: newRegion,
maximumColorCount: 20,
);
setState(() {});
}The error looks this:
flutter: ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
flutter: The following StateError was thrown by an image listener:
flutter: Bad state: Future already completed
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #1 PaletteGenerator.fromImageProvider.imageListener (package:palette_generator/palette_generator.dart:188:22)
flutter: #2 ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:282:17)
flutter: #3 MultiFrameImageStreamCompleter._emitFrame (package:flutter/src/painting/image_stream.dart:519:5)
flutter: #4 MultiFrameImageStreamCompleter._decodeNextFrameAndSchedule (package:flutter/src/painting/image_stream.dart:512:7)
flutter: <asynchronous suspension>
flutter: #5 MultiFrameImageStreamCompleter.addListener (package:flutter/src/painting/image_stream.dart:528:7)
flutter: #6 ImageStream.addListener (package:flutter/src/painting/image_stream.dart:156:25)
flutter: #7 PaletteGenerator.fromImageProvider (package:palette_generator/palette_generator.dart:200:12)
flutter: <asynchronous suspension>
flutter: #8 _TestScreenState._updatePaletteGenerator (package:test_app/screens/test_screen.dart:28:22)
flutter: #9 _TestScreenState.initState (package:test_app/screens/test_screen.dart:15:5)
flutter: #10 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3763:58)
flutter: #11 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #12 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #13 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #14 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #18 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #22 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #23 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #25 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #26 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #28 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4771:32)
flutter: #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #32 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #34 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #35 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #38 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #42 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #44 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #45 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #46 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #47 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #48 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #49 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #50 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #51 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #52 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #53 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #54 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #55 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #56 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #57 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #58 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #59 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #60 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #61 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #62 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #63 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #64 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #65 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #66 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #67 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #69 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #70 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #71 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #72 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #73 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #74 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #75 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #76 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #77 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #78 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #79 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #80 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #81 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #82 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #83 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #84 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #85 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #86 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #87 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #88 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #89 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #90 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #91 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #92 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #93 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #94 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #95 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #96 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #97 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #98 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #99 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #100 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #101 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #102 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #103 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #104 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #105 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #106 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #107 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #108 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #109 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #110 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #111 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #112 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #113 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #114 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #115 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #116 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #117 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #118 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #119 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #120 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #121 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #122 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #123 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #124 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #125 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #126 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #127 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #128 Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #129 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4449:32)
flutter: #130 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4781:17)
flutter: #131 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #132 _TheatreElement.update (package:flutter/src/widgets/overlay.dart:507:16)
flutter: #133 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #134 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #135 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #136 StatefulElement.update (package:flutter/src/widgets/framework.dart:3811:5)
flutter: #137 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #138 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #139 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #140 ProxyElement.update (package:flutter/src/widgets/framework.dart:3921:5)
flutter: #141 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #142 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
flutter: #143 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #144 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #145 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #146 StatefulElement.update (package:flutter/src/widgets/framework.dart:3811:5)
flutter: #147 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #148 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
flutter: #149 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #150 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4673:14)
flutter: #151 Element.updateChild (package:flutter/src/widgets/framework.dart:2711:15)
flutter: #152 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #153 Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #154 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2255:33)
flutter: #155 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:653:20)
flutter: #156 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
flutter: #157 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #158 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
flutter: #159 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #160 _invoke (dart:ui/hooks.dart:128:13)
flutter: #161 _drawFrame (dart:ui/hooks.dart:117:3)
flutter: (elided one frame from package dart:async)
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
The Solution
I replaced this code in package:palette_generator/palette_generator.dart:188:22:
imageCompleter.complete(info.image);With this:
if (!imageCompleter.isCompleted) {
imageCompleter.complete(info.image);
}