未加载颤动图像(例外:解析图像编解码器)

时间:2018-05-02 09:09:45

标签: image dart flutter codec

当我尝试运行图像时,资产没有正确加载,我得到一个例外:

  

以下断言被抛出解析图像编解码器:无法加载资产:/ images / p8.png`

几周前它正在运转,现在停止了。我试图从不同的PC和Mac运行(使用模拟器),但仍然无法加载图像。而是正确加载字体。

这是我加载图片的方式,它们是在GridView内呈现的 以下是代码:

return new Expanded(
      child: new GridView.count(
          crossAxisCount: 2,
          padding: const EdgeInsets.fromLTRB(16.0, 25.0, 16.0, 4.0),
          children: <Widget>[
            new MaterialButton(
              onPressed: () {
                Navigator.of(context).pushNamed('/biliardo');
              },
              child: new Column(
                children: <Widget>[
                  new Image(
                    //parte importante, definire gli asset per trovarli più velocemnte
                    //si inseriscono nel pubspec.yaml
                    image: new AssetImage('/images/p8.png'),
                    height: 100.0,
                    width: 100.0,
                  ),
                  new Text(
                    "BILIARDO",
                    style: new TextStyle(
                      color: (darkTheme) ? Colors.blue : Colors.black,
                    ),
                  )
                ],
              ),
            ),

            .....

    );

pubsec.yaml文件代码:

flutter:
  uses-material-design: true
  assets:
    - images/emptyBall.png
    - images/p1.png
    - images/p2.png
    - images/p3.png
    - images/p4.png
    - images/p5.png
    - images/p6.png
    - images/p7.png
    - images/p8.png
    - images/p9.png
    - images/p10.png
    - images/p11.png
    - images/p12.png
    - images/p13.png
    - images/p14.png
    - images/p15.png
    - images/basket.png
    - images/volley.png
    - images/tennis.png
    - images/rugby.png
    - images/numbers.png
  fonts:
    - family: ShotClock
      fonts:
        - asset: utils/ShotClock.ttf

日志

颤动分析

Analyzing D:\Android\AndroidStudioProjects\flutter_app...
No issues found!
Ran in 5.2s

flutter -v run

https://docs.google.com/document/d/133Z7029VGJXBDCYLgCrj09F9cLbvIQQ5X8yBS4pPC7I/edit?usp=sharing

Flutter Doctor

扑医生-v

[√] Flutter (Channel beta, v0.3.1, on Microsoft Windows [Versione 10.0.16299.371], locale it-IT)
    • Flutter version 0.3.1 at C:\Program Files\Flutter\flutter
    • Framework revision 12bbaba9ae (12 days ago), 2018-04-19 23:36:15 -0700
    • Engine revision 09d05a3891
    • Dart version 2.0.0-dev.48.0.flutter-fe606f890b

[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at C:\Users\Zanini\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 27.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    • All Android licenses accepted.

[√] Android Studio (version 3.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 24.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)

[√] Connected devices (1 available)
    • Nexus 5X • 01cde5e7db8d4c14 • android-arm64 • Android 8.1.0 (API 27)

• No issues found!

13 个答案:

答案 0 :(得分:6)

摆脱png路径中的前导/。它应该是images/p8.png

另外,请考虑使用清除Image.asset构造函数,例如:

new Image.asset('images/p8.png', width: 100.0, height: 100.0)

答案 1 :(得分:3)

在所有图像路径中正确添加'/'

在Android Studio中,

工具-> Flutter-> Flutter清洁

答案 2 :(得分:3)

除了目录路径之外,请确保您的图片有效,但我有一个不支持png的文件,该文件导致了此错误。.只需通过在任何图片查看器中打开图片以确认该文件受支持即可。

答案 3 :(得分:2)

要注意的一件事是,“ assets:”标记必须正确地与“ flutter:”标记缩进,但是在加载资产时,它只会偶尔引发错误。所以这行不通:

flutter: 
assets:
    - images/

但这会:

flutter: 
  assets:
    - images/

答案 4 :(得分:1)

使用新的flutter版本,您还可以将文件夹放置在pubspec.yaml中,而不仅仅是文件

flutter:
  uses-material-design: true
  assets:
    - images/

答案 5 :(得分:0)

我正在Windows 10上进行开发,而不是在Mac OS X和Linux上进行开发,但我遇到了同样的问题...实际上,对我来说,解决方案只是更改unix之类的路径分隔符:'/' dart / flutter文件中的'\',用于Windows环境

因此在pubspec.yaml图片/mypicture.jpg中 并在dart文件中:使用:实例化对象时:

儿童新的Images.asset('images \\ mypicture.jpg')

双反斜杠: \\太容易逃脱\字符 ....

希望它将对许多基于Windows平台的开发人员有所帮助

这使得它可以在Android模拟器上运行,但是在物理移动设备上,我想您需要在打包之前使用斜杠以其他方式进行更改/ 尝试两者...

答案 6 :(得分:0)

除了其他问题外,在添加新图像资产时,必须进行冷装以显示新资产。如果这样做没有帮助,flutter clean应该解决问题。

答案 7 :(得分:0)

转到工具 -> Flutter -> Flutter Clean 然后重新运行项目(不是热重载)

通过这 2 个步骤,我可以解决同样的问题。如果 pupspec.yaml 文件缩进为规则。

答案 8 :(得分:0)

不太确定但可以解决问题:

  • 如果一个小部件使用根目录而另一个小部件使用子目录,则通常会导致编解码器问题。

  • 避免在pubspec.yaml文件中使用子目录(如“-images/”),例如避免使用:

    flutter:   
      uses-material-design: true
    
      assets:
        - images/ 
    

替代使用:

flutter:

  uses-material-design: true

  assets:

    - 'FILENAME WITH ITS EXTENSION'  

答案 9 :(得分:0)

要将资产添加到您的应用程序,请添加资产部分,如下所示:

  assets:
    - assets/test.jpeg

你应该只使用文件夹名称作为资产,因为它是 Flutter ImageProvider 类的默认值,然后在终端输入 flutter clean 并重新启动应用

答案 10 :(得分:-1)

  1. 关闭模拟器

  2. 在终端中输入“flutter clean”(不带引号)。

  3. 再次运行您的应用。

  4. 它很适合你。

答案 11 :(得分:-1)

请确保像这样在 pubspec.yaml 文件中包含该资产

     # To add assets to your application, add an assets section, like this:
  assets:
    - assets/images/icon-48.png
    - assets/images/icon-480.png
    - assets/images/icon-400.png
    - assets/images/qr.png
    - assets/images/bulb.png
    - assets/images/google_logo.png

答案 12 :(得分:-1)

同样的事情发生在我身上,我花了将近两个小时看到错误,答案很简单。

在assets目录下,因为不想加载图片,忘记放正斜杠(/)了。

Solution