2017-05-09 141 views
2

根据Flutter docs我试图使用DecoratedBox加载全屏图像作为Container的背景图像。BoxDecoration:DecorationImage全屏幕背景图片

我pubspec.yaml包含一个嵌入式资产相关的定义:

flutter: 
    uses-material-design: true 
    assets: 
    - assets/background.png 

和widget.dart试图填补新容器的背景规定:

@override 
    Widget build(BuildContext context) { 
    return new Container(
      decoration: new BoxDecoration(
       color: Colors.purple, 
       image : new DecorationImage(
       image: new ExactAssetImage('assets/background.png'), 
       fit: BoxFit.cover, 
      ), 
      ), 
    ), 
    } 

但我得到以下错误:

Unable to load asset: assets/background.png 

Image provider: ExactAssetImage(name: "assets/background.png", scale: 1.0, bundle: null) 

很明显,该软件包无法正确解析。有没有人知道我在这里做错了什么?

回答

2

它适合我。几件事要仔细检查:

  • 热重新加载/重新启动不会更改资产,所以请确保您正在执行常规生成。
  • 尝试从设备上卸载应用程序并做一个干净的构建,有时构建系统很难替换旧的安装(例如,如果您的调试密钥更改)
  • 请确保实际资产以及所有对它的引用指向assets/background.png,而不是images/background.png(默认的pubspec.yaml建议将图像放入一个名为images的文件夹中,但只要所有内容匹配,就没有关系)。
  • 尝试使用的AssetImage代替ExactAssetImage
  • 确保集装箱要么有一个孩子或者是在那里将通过其父在给定大小的地方(如Stack将被罚款,但Column会导致其如果它没有固有尺寸或孩子,则为0x0)
+0

从控制台运行“flutter build clean”并从intellij运行main.dart修复了此问题。当我运行该项目时,似乎intellij不是重建/更新生成文件夹。谢谢! – Pieter

+0

你在iOS或Android上运行吗?如果是iOS,它可能与https://github.com/flutter/flutter/issues/9846 –

+0

在Android设备上运行的问题相同。 – Pieter