when using extended image inside listview.builder, sometimes it throw error from animation library and image resource service. try to scroll the image, when there are images that fail to load it throw error. can we catch the error and show a nice error message?
import 'dart:math';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage>
with SingleTickerProviderStateMixin {
AnimationController _animationController;
Animation<double> _animation;
Function animationListener;
List<double> doubleTapScales = <double>[1.0, 2.0];
@override
void initState() {
super.initState();
_animationController = AnimationController(
duration: const Duration(milliseconds: 150), vsync: this);
}
@override
void dispose() {
_animationController?.dispose();
super.dispose();
}
List<String> imgs = [
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/00,0.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/00.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/001.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/002.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/003.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/004.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/005.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/006.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/007.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/008.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/009.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/010.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/011.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/012.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/013.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/014.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/015.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/016.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/017.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/018.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/019.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/020.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/021.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/022.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/023.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/024.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/025.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/026.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/027.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/028.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/029.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/030.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/031.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/032.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/033.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/034.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/035.jpg",
"https://yuucdn.com/wp-content/uploads/S/Solo Leveling/Chapter 80/z10.jpg"
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(widget.title),
),
body: Container(
child: ListView.builder(
padding: EdgeInsets.zero,
itemCount: imgs.length,
itemBuilder: (cx, index) {
var img = imgs[index];
Widget image = ExtendedImage.network(
img,
cache: true,
enableMemoryCache: true,
loadStateChanged: (ExtendedImageState state) {
switch (state.extendedImageLoadState) {
case LoadState.loading:
_animationController.reset();
return Center(
child: Container(
height: 250.0,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(
valueColor:
new AlwaysStoppedAnimation<Color>(Colors.blue),
),
SizedBox(height: 20.0),
Text("Memuat Gambar ${index + 1}/${imgs.length}")
],
),
));
break;
case LoadState.completed:
_animationController.forward();
return null;
break;
case LoadState.failed:
_animationController.reset();
return Center(
child: Container(
height: 250,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
"Gagal memuat gambar ${index + 1}/${imgs.length}"),
FlatButton(
onPressed: state.reLoadImage,
child: Text("Muat Ulang"),
)
],
),
));
break;
}
},
fit: BoxFit.contain,
enableSlideOutPage: true,
mode: ExtendedImageMode.Gesture,
initGestureConfigHandler: (state) {
double initialScale = 1.0;
return GestureConfig(
inPageView: true,
initialScale: initialScale,
maxScale: max(initialScale, 5.0),
animationMaxScale: max(initialScale, 5.0),
//you can cache gesture state even though page view page change.
//remember call clearGestureDetailsCache() method at the right time.(for example,this page dispose)
cacheGesture: false);
},
onDoubleTap: (ExtendedImageGestureState state) {
///you can use define pointerDownPosition as you can,
///default value is double tap pointer down postion.
var pointerDownPosition = state.pointerDownPosition;
double begin = state.gestureDetails.totalScale;
double end;
//remove old
_animation?.removeListener(animationListener);
//stop pre
_animationController.stop();
//reset to use
_animationController.reset();
if (begin == doubleTapScales[0]) {
end = doubleTapScales[1];
} else {
end = doubleTapScales[0];
}
animationListener = () {
//print(_animation.value);
state.handleDoubleTap(
scale: _animation.value,
doubleTapPosition: pointerDownPosition);
};
_animation = _animationController
.drive(Tween<double>(begin: begin, end: end));
_animation.addListener(animationListener);
_animationController.forward();
},
);
return Container(child: image);
},
)));
}
}
I/flutter (27495): ══╡ EXCEPTION CAUGHT BY ANIMATION LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (27495): The following assertion was thrown while notifying listeners for AnimationController:
I/flutter (27495): setState() or markNeedsBuild() called during build.
I/flutter (27495): This ExtendedImageGesture widget cannot be marked as needing to build because the framework is
I/flutter (27495): already in the process of building widgets. A widget can be marked as needing to be built during
I/flutter (27495): the build phase only if one of its ancestors is currently building. This exception is allowed
I/flutter (27495): because the framework builds parent widgets before children, which means a dirty descendant will
I/flutter (27495): always be built. Otherwise, the framework might not visit this widget during this build phase.
I/flutter (27495): The widget on which setState() or markNeedsBuild() was called was:
I/flutter (27495): ExtendedImageGesture
I/flutter (27495): The widget which was currently being built when the offending call was made was:
I/flutter (27495): ExtendedImage
I/flutter (27495):
I/flutter (27495): When the exception was thrown, this was the stack:
I/flutter (27495): #0 Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:3670:11)
I/flutter (27495): #1 Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3685:6)
I/flutter (27495): #2 State.setState (package:flutter/src/widgets/framework.dart:1161:14)
I/flutter (27495): #3 _ExtendedImageGestureState._handleScaleUpdate (package:extended_image/src/gesture/extended_image_gesture.dart:213:7)
I/flutter (27495): #4 _ExtendedImageGestureState.handleDoubleTap (package:extended_image/src/gesture/extended_image_gesture.dart:371:5)
I/flutter (27495): #5 _MyHomePageState.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:demo/main.dart:196:25)
I/flutter (27495): #6 _AnimationController&Animation&AnimationEagerListenerMixin&AnimationLocalListenersMixin.notifyListeners (package:flutter/src/animation/listener_helpers.dart:124:19)
I/flutter (27495): #7 AnimationController.value= (package:flutter/src/animation/animation_controller.dart:362:5)
I/flutter (27495): #8 AnimationController.reset (package:flutter/src/animation/animation_controller.dart:381:5)
I/flutter (27495): #9 _MyHomePageState.build.<anonymous closure>.<anonymous closure> (package:demo/main.dart:113:42)
I/flutter (27495): #10 _ExtendedImageState.build (package:extended_image/src/extended_image.dart:781:24)
I/flutter (27495): #11 StatefulElement.build (package:flutter/src/widgets/framework.dart:4012:27)
I/flutter (27495): #12 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3924:15)
I/flutter (27495): #13 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #14 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #15 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4053:11)
I/flutter (27495): #16 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #18 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #19 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #20 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #21 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #22 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #25 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14)
I/flutter (27495): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #28 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14)
I/flutter (27495): #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #32 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #34 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #36 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #37 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #38 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #39 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #40 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #41 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4279:11)
I/flutter (27495): #42 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #43 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #44 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #45 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #46 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #47 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4053:11)
I/flutter (27495): #48 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #49 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #50 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #51 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #52 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #53 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #54 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #55 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #56 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #57 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1181:36)
I/flutter (27495): #58 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1166:20)
I/flutter (27495): #59 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2320:19)
I/flutter (27495): #60 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1159:11)
I/flutter (27495): #61 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:354:23)
I/flutter (27495): #62 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1715:58)
I/flutter (27495): #63 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:796:15)
I/flutter (27495): #64 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1715:13)
I/flutter (27495): #65 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:343:5)
I/flutter (27495): #66 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:489:5)
I/flutter (27495): #67 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:191:19)
I/flutter (27495): #68 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:234:19)
I/flutter (27495): #69 RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter (27495): #70 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:181:11)
I/flutter (27495): #71 RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter (27495): #72 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:406:13)
I/flutter (27495): #73 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1334:12)
I/flutter (27495): #74 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1252:20)
I/flutter (27495): #75 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1496:7)
I/flutter (27495): #76 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:765:18)
I/flutter (27495): #77 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:346:19)
I/flutter (27495): #78 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter (27495): #79 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:285:5)
I/flutter (27495): #80 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1016:15)
I/flutter (27495): #81 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:958:9)
I/flutter (27495): #82 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:874:5)
I/flutter (27495): #86 _invoke (dart:ui/hooks.dart:236:10)
I/flutter (27495): #87 _drawFrame (dart:ui/hooks.dart:194:3)
I/flutter (27495): (elided 3 frames from package dart:async)
I/flutter (27495):
I/flutter (27495): The AnimationController notifying listeners was:
I/flutter (27495): AnimationController#08877(⏮ 0.000; paused)
I/flutter (27495): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
I/flutter (27495): The following assertion was thrown when reporting an error to an image listener:
I/flutter (27495): setState() called after dispose(): _ExtendedImageState#2d7a5(lifecycle state: defunct, not mounted,
I/flutter (27495): stream: ImageStream#08c49(MultiFrameImageStreamCompleter#0c8aa, [720×2850] @ 1.0x, 1 listener),
I/flutter (27495): pixels: null)
I/flutter (27495): This error happens if you call setState() on a State object for a widget that no longer appears in
I/flutter (27495): the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error
I/flutter (27495): can occur when code calls setState() from a timer or an animation callback.
I/flutter (27495): The preferred solution is to cancel the timer or stop listening to the animation in the dispose()
I/flutter (27495): callback. Another solution is to check the "mounted" property of this object before calling
I/flutter (27495): setState() to ensure the object is still in the tree.
I/flutter (27495): This error might indicate a memory leak if setState() is being called because another object is
I/flutter (27495): retaining a reference to this State object after it has been removed from the tree. To avoid memory
I/flutter (27495): leaks, consider breaking the reference to this object during dispose().
I/flutter (27495):
I/flutter (27495): When the exception was thrown, this was the stack:
I/flutter (27495): #0 State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1105:9)
I/flutter (27495): #1 State.setState (package:flutter/src/widgets/framework.dart:1140:6)
I/flutter (27495): #2 _ExtendedImageState._loadFailed (package:extended_image/src/extended_image.dart:698:5)
I/flutter (27495): #3 ImageStreamCompleter.reportError (package:flutter/src/painting/image_stream.dart:474:24)
I/flutter (27495): #4 ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:409:9)
I/flutter (27495): #5 MultiFrameImageStreamCompleter._emitFrame (package:flutter/src/painting/image_stream.dart:709:5)
I/flutter (27495): #6 MultiFrameImageStreamCompleter._decodeNextFrameAndSchedule (package:flutter/src/painting/image_stream.dart:694:7)
I/flutter (27495): <asynchronous suspension>
I/flutter (27495): #7 MultiFrameImageStreamCompleter._handleCodecReady (package:flutter/src/painting/image_stream.dart:644:7)
I/flutter (27495): #17 ExtendedNetworkImageProvider._loadAsync (package:extended_image_library/src/extended_network_image_provider.dart)
I/flutter (27495): <asynchronous suspension>
I/flutter (27495): #18 ExtendedNetworkImageProvider.load (package:extended_image_library/src/extended_network_image_provider.dart:62:14)
I/flutter (27495): #19 ImageProvider.resolve.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:316:48)
I/flutter (27495): #20 ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:160:22)
I/flutter (27495): #21 ImageProvider.resolve.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:316:25)
I/flutter (27495): #22 SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:38:29)
I/flutter (27495): #23 ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:313:11)
I/flutter (27495): #27 ImageProvider.resolve (package:flutter/src/painting/image_provider.dart:305:16)
I/flutter (27495): #28 _ExtendedImageState._resolveImage (package:extended_image/src/extended_image.dart:671:48)
I/flutter (27495): #29 _ExtendedImageState.didChangeDependencies (package:extended_image/src/extended_image.dart:628:5)
I/flutter (27495): #30 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4051:12)
I/flutter (27495): #31 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #32 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #33 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #34 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #35 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #36 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #37 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #39 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #40 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14)
I/flutter (27495): #41 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #42 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #43 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5092:14)
I/flutter (27495): #44 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #45 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #46 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #47 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #48 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #49 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #50 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #51 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #52 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #53 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #54 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #55 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #56 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4279:11)
I/flutter (27495): #57 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #58 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #60 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #61 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #62 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4053:11)
I/flutter (27495): #63 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #64 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #65 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3935:16)
I/flutter (27495): #67 Element.rebuild (package:flutter/src/widgets/framework.dart:3721:5)
I/flutter (27495): #68 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3907:5)
I/flutter (27495): #69 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3902:5)
I/flutter (27495): #70 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3084:14)
I/flutter (27495): #71 Element.updateChild (package:flutter/src/widgets/framework.dart:2887:12)
I/flutter (27495): #72 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1181:36)
I/flutter (27495): #73 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1166:20)
I/flutter (27495): #74 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2320:19)
I/flutter (27495): #75 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1159:11)
I/flutter (27495): #76 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:354:23)
I/flutter (27495): #77 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1715:58)
I/flutter (27495): #78 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:796:15)
I/flutter (27495): #79 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1715:13)
I/flutter (27495): #80 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:343:5)
I/flutter (27495): #81 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:489:5)
I/flutter (27495): #82 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:191:19)
I/flutter (27495): #83 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:234:19)
I/flutter (27495): #84 RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter (27495): #85 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:181:11)
I/flutter (27495): #86 RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter (27495): #87 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:406:13)
I/flutter (27495): #88 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1334:12)
I/flutter (27495): #89 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1252:20)
I/flutter (27495): #90 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1496:7)
I/flutter (27495): #91 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:765:18)
I/flutter (27495): #92 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:346:19)
I/flutter (27495): #93 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter (27495): #94 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:285:5)
I/flutter (27495): #95 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1016:15)
I/flutter (27495): #96 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:958:9)
I/flutter (27495): #97 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:874:5)
I/flutter (27495): #101 _invoke (dart:ui/hooks.dart:236:10)
I/flutter (27495): #102 _drawFrame (dart:ui/hooks.dart:194:3)
I/flutter (27495): (elided 15 frames from package dart:async and package dart:async-patch)
I/flutter (27495): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#207e8(lifecycle state: defunct, not mounted, stream: ImageStream#7f972(MultiFrameImageStreamCompleter#96a3a, [720×3616] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#5a814(lifecycle state: defunct, not mounted, stream: ImageStream#9f629(MultiFrameImageStreamCompleter#ad2c1, [720×3977] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#bbce4(lifecycle state: defunct, not mounted, stream: ImageStream#9097f(MultiFrameImageStreamCompleter#ce8b3, [720×3134] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#5e860(lifecycle state: defunct, not mounted, stream: ImageStream#530fa(MultiFrameImageStreamCompleter#dfc2e, [720×2415] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() or markNeedsBuild() called during build.
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#6a1bd(lifecycle state: defunct, not mounted, stream: ImageStream#2f9c1(MultiFrameImageStreamCompleter#92e26, [720×2406] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#55640(lifecycle state: defunct, not mounted, stream: ImageStream#2d472(MultiFrameImageStreamCompleter#c714e, [720×3108] @ 1.0x, 1 listener), pixels: null)
I/flutter (27495): Another exception was thrown: setState() called after dispose(): _ExtendedImageState#9033d(lifecycle state: defunct, not mounted, stream: ImageStream#08618(MultiFrameImageStreamCompleter#8a1da, [720×4646] @ 1.0x, 1 listener), pixels: null)