在构建之前预加载资产映像 [英] preload assets images before build

查看:58
本文介绍了在构建之前预加载资产映像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

am试图将我的容器的背景图片设置为像这样的资产图片:

am trying to set background image of my container to image from assets like this:

return new Container(
            decoration: new BoxDecoration(
              image: new DecorationImage(
                image: new AssetImage(images[index]),
                fit: BoxFit.cover,
              ),
            ),

但是,这将需要一些时间来加载并返回空白的白色屏幕,直到图像加载..

but this will take some time to load and return blank whilte screen till image load ..

所以我试图在像这样构建之前预加载图像:

so i tried to preload images before build like this:

@override
void initState() {
precacheImage(new AssetImage(images[1]), context);
precacheImage(new AssetImage(images[2]), context);
precacheImage(new AssetImage(images[3]), context);
super.initState();
}

,这返回了此错误:

颤振:W小工具库引起的异常CA═══════════════════════颤抖:构建Builder时引发了以下断言:颤振:之前调用了InheritedFromWidgetOfExactType(MediaQuery)或inheritFromElement()颤抖:_WalkthroughPageState.initState()已完成.flutter:当继承的窗口小部件更改时,例如,如果Theme.of()的值更改,则其依赖颤抖:小部件被重建.如果从属窗口小部件对继承的窗口小部件的引用在构造函数中flutter:或initState()方法,则重建的依赖小部件将不会反映flutter:继承的小部件.flutter:通常,对继承的窗口小部件的引用应在窗口小部件build()方法中进行.或者,flutter:可以将基于继承的窗口小部件的初始化放置在didChangeDependencies方法中,该方法flutter:在initState之后以及依赖项在其后更改时被调用.扑:扑:引发异常时,这是堆栈:颤振:#0 StatefulElement.inheritFromElement.(包:flutter/src/widgets/framework.dart:3898:9)颤动:#1 StatefulElement.inheritFromElement(包:flutter/src/widgets/framework.dart:3931:6)颤抖:#2 Element.inheritFromWidgetOfExactType(package:flutter/src/widgets/framework.dart:3274:14)颤抖:#3 MediaQuery.of(包:flutter/src/widgets/media_query.dart:476:38)颤抖:#4 createLocalImageConfiguration(package:flutter/src/widgets/image.dart:49:34)flutter:#5 precacheImage(package:flutter/src/widgets/image.dart:81:37)颤抖:#6 _WalkthroughPageState.initState(package:spl/Pages/walkthrough.page.dart:65:5)颤抖:#7 StatefulElement._firstBuild(包:flutter/src/widgets/framework.dart:3808:58)颤振:#8 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤抖:#9 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#10 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#11 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#12 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#13 ComponentElement._firstBuild(package:flutter/src/widgets/framework.dart:3679:5)颤振:#14 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤抖:#15 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤振:#16 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤动:#17 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤抖:#18 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#19 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#20 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤抖:#21 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#22 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#23 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤振:#24 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#25 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#26 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#27 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#28 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤抖:#29 StatefulElement._firstBuild(包:flutter/src/widgets/framework.dart:3826:11)颤振:#30 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤抖:#31 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤振:#32 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#33 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤抖:#34 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#35 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#36 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#37 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#38 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤振:#39 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#40 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#41 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#42 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤抖:#43 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#44 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#45 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#46 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#47 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤抖:#48 StatefulElement._firstBuild(包:flutter/src/widgets/framework.dart:3826:11)颤振:#49 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#50 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤振:#51 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤抖:#52 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#53 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#54 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤振:#55 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#56 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#57 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤动:#58 SingleChildRenderObjectElement.mount(包:flutter/src/widgets/framework.dart:4838:14)颤抖:#59 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤振:#60 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#61 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#62 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#63 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤振:#64 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#65 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#66 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#67 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#68 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#69 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤抖:#70 StatefulElement._firstBuild(包:flutter/src/widgets/framework.dart:3826:11)颤振:#71 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#72 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤抖:#73 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#74 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#75 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤振:#76 ComponentElement._firstBuild(包:flutter/src/widgets/framework.dart:3679:5)颤抖:#77 StatefulElement._firstBuild(包:flutter/src/widgets/framework.dart:3826:11)颤振:#78 ComponentElement.mount(包:flutter/src/widgets/framework.dart:3674:5)颤振:#79 Element.inflateWidget(包:flutter/src/widgets/framework.dart:2950:14)颤振:#80 Element.updateChild(包:flutter/src/widgets/framework.dart:2753:12)颤振:#81 RenderObjectElement.updateChildren(包:flutter/src/widgets/framework.dart:4621:32)颤抖:#82 MultiChildRenderObjectElement.update(包:flutter/src/widgets/framework.dart:4953:17)颤抖:#83 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤动:#84 _TheatreElement.update(包:flutter/src/widgets/overlay.dart:507:16)颤振:#85 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤振:#86 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#87 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#88 StatefulElement.update(包:flutter/src/widgets/framework.dart:3856:5)颤抖:#89 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤振:#90 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#91 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#92 ProxyElement.update(包:flutter/src/widgets/framework.dart:3968:5)颤抖:#93 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤抖:#94 SingleChildRenderObjectElement.update(包:flutter/src/widgets/framework.dart:4845:14)颤抖:#95 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤振:#96 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#97 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#98 StatefulElement.update(包:flutter/src/widgets/framework.dart:3856:5)颤抖:#99 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤振:#100 SingleChildRenderObjectElement.update(包:flutter/src/widgets/framework.dart:4845:14)颤抖:#101 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤抖:#102 SingleChildRenderObjectElement.update(包:flutter/src/widgets/framework.dart:4845:14)颤抖:#103 Element.updateChild(包:flutter/src/widgets/framework.dart:2742:15)颤振:#104 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:3710:16)颤振:#105 Element.rebuild(包:flutter/src/widgets/framework.dart:3547:5)颤抖:#106 BuildOwner.buildScope(包:flutter/src/widgets/framework.dart:2286:33)flutter:#107 _WidgetsFlutterBinding& BindingBase& GestureBinding& ServicesBinding& SchedulerBinding& PaintingBinding& SemanticsBinding& RendererBinding& WidgetsBinding.drawFrame(package:flutter/src/widgets/binding.dart:676:20)flutter:#108 _WidgetsFlutterBinding& BindingBase& GestureBinding& ServicesBinding& SchedulerBinding& PaintingBinding& SemanticsBinding& RendererBinding._handlePersistentFrameCallback(package:flutter/src/rendering/binding.dart:219:5)flutter:#109 _WidgetsFlutterBinding& BindingBase& GestureBinding& ServicesBinding& SchedulerBinding._invokeFrameCallback(包:flutter/src/scheduler/binding.dart:990:15)flutter:#110 _WidgetsFlutterBinding& BindingBase& GestureBinding& ServicesBinding& SchedulerBinding.handleDrawFrame(包:flutter/src/scheduler/binding.dart:930:9)flutter:#111 _WidgetsFlutterBinding& BindingBase& GestureBinding& ServicesBinding& SchedulerBinding._handleDrawFrame(包:flutter/src/scheduler/binding.dart:842:5)扑动:#112 _invoke(dart:ui/hooks.dart:151:13)扑:#113 _drawFrame(dart:ui/hooks.dart:140:3)颤动:════════════════════════════════════════════════════════════════════════════════════════════════════

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ flutter: The following assertion was thrown building Builder: flutter: inheritFromWidgetOfExactType(MediaQuery) or inheritFromElement() was called before flutter: _WalkthroughPageState.initState() completed. flutter: When an inherited widget changes, for example if the value of Theme.of() changes, its dependent flutter: widgets are rebuilt. If the dependent widget's reference to the inherited widget is in a constructor flutter: or an initState() method, then the rebuilt dependent widget will not reflect the changes in the flutter: inherited widget. flutter: Typically references to to inherited widgets should occur in widget build() methods. Alternatively, flutter: initialization based on inherited widgets can be placed in the didChangeDependencies method, which flutter: is called after initState and whenever the dependencies change thereafter. flutter: flutter: When the exception was thrown, this was the stack: flutter: #0 StatefulElement.inheritFromElement. (package:flutter/src/widgets/framework.dart:3898:9) flutter: #1 StatefulElement.inheritFromElement (package:flutter/src/widgets/framework.dart:3931:6) flutter: #2 Element.inheritFromWidgetOfExactType (package:flutter/src/widgets/framework.dart:3274:14) flutter: #3 MediaQuery.of (package:flutter/src/widgets/media_query.dart:476:38) flutter: #4 createLocalImageConfiguration (package:flutter/src/widgets/image.dart:49:34) flutter: #5 precacheImage (package:flutter/src/widgets/image.dart:81:37) flutter: #6 _WalkthroughPageState.initState (package:spl/Pages/walkthrough.page.dart:65:5) flutter: #7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3808:58) flutter: #8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #10 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #12 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #17 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #18 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #19 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #20 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #22 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #23 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #25 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #27 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #28 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #29 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3826:11) flutter: #30 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #32 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #33 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #35 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #37 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #38 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #39 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #40 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #41 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #42 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #43 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #44 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #45 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #46 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #47 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #48 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3826:11) flutter: #49 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #50 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #51 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #52 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #53 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #54 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #55 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #56 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #57 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #58 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4838:14) flutter: #59 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #60 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #61 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #62 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #63 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #64 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #65 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #66 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #67 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #68 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #69 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #70 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3826:11) flutter: #71 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #72 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #73 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #74 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #75 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #76 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3679:5) flutter: #77 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3826:11) flutter: #78 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3674:5) flutter: #79 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #80 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:12) flutter: #81 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4621:32) flutter: #82 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4953:17) flutter: #83 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #84 _TheatreElement.update (package:flutter/src/widgets/overlay.dart:507:16) flutter: #85 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #87 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #88 StatefulElement.update (package:flutter/src/widgets/framework.dart:3856:5) flutter: #89 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #90 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #91 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #92 ProxyElement.update (package:flutter/src/widgets/framework.dart:3968:5) flutter: #93 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #94 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4845:14) flutter: #95 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #97 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #98 StatefulElement.update (package:flutter/src/widgets/framework.dart:3856:5) flutter: #99 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #100 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4845:14) flutter: #101 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #102 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4845:14) flutter: #103 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15) flutter: #104 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3710:16) flutter: #105 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #106 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2286:33) flutter: #107 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:676:20) flutter: #108 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:219:5) flutter: #109 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15) flutter: #110 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9) flutter: #111 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5) flutter: #112 _invoke (dart:ui/hooks.dart:151:13) flutter: #113 _drawFrame (dart:ui/hooks.dart:140:3) flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════

推荐答案

我遇到了同样的问题,解决方法是在错误说明本身中:

I had the same problem, the solution was in the error description itself:

可以将基于继承的窗口小部件的

初始化放置在didChangeDependencies方法中,该方法在initState和此后只要依赖项发生变化.

initialization based on inherited widgets can be placed in the didChangeDependencies method, which is called after initState and whenever the dependencies change thereafter.

这是我代码的简化版,将图像预加载到方法 didChangeDependencies 中:

Here's a simplified version of my code, preloading images in method didChangeDependencies:

class _SampleWidgetState extends State<SamleWidget> {
  Image image1;
  Image image2;
  Image image3;
  Image image4;

  Image currentImage;

  @override
  void initState() {
    super.initState();

    image1 = Image.asset("assets/image1.png");
    image2 = Image.asset("assets/image2.png");
    image3 = Image.asset("assets/image3.png");
    image4 = Image.asset("assets/image4.png");

    currentImage = image1;
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();

    precacheImage(image1.image, context);
    precacheImage(image2.image, context);
    precacheImage(image3.image, context);
    precacheImage(image4.image, context);
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: currentImage,
    );
  }

  void setImage(int index) {
      switch (index) {
        case 1: currentImage = image1; break;
        case 2: currentImage = image2; break;
        case 3: currentImage = image3; break;
        case 4: currentImage = image4; break;
      }
  }
}

希望这会有所帮助:)

这篇关于在构建之前预加载资产映像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆