android - Flutter 无法在物理设备上加载图像资源(但在模拟器上加载它就好了)

标签 android flutter dart flutter-image

我正在构建一个 flutter 应用程序,当我在手机上运行该应用程序时 Assets 图像不会加载,但当我在模拟器上运行该应用程序时它加载正常。

这是我得到的错误:

> I/flutter (26364): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE
> ╞════════════════════════════════════════════════════ I/flutter
> (26364): The following assertion was thrown resolving an image codec:
> I/flutter (26364): Unable to load asset: images/diamond.png I/flutter
> (26364): I/flutter (26364): When the exception was thrown, this was
> the stack: I/flutter (26364): #0      PlatformAssetBundle.load
> (package:flutter/src/services/asset_bundle.dart:221:7) I/flutter
> (26364): <asynchronous suspension> I/flutter (26364): #1     
> AssetBundleImageProvider._loadAsync
> (package:flutter/src/painting/image_provider.dart:464:44) I/flutter
> (26364): <asynchronous suspension> I/flutter (26364): #2     
> AssetBundleImageProvider.load
> (package:flutter/src/painting/image_provider.dart:449:14) I/flutter
> (26364): #3      ImageProvider.resolve.<anonymous closure>.<anonymous
> closure>.<anonymous closure>
> (package:flutter/src/painting/image_provider.dart:316:48) I/flutter
> (26364): #4      ImageCache.putIfAbsent
> (package:flutter/src/painting/image_cache.dart:160:22) I/flutter
> (26364): #5      ImageProvider.resolve.<anonymous closure>.<anonymous
> closure> (package:flutter/src/painting/image_provider.dart:316:25)
> I/flutter (26364): (elided 13 frames from package dart:async)
> I/flutter (26364): I/flutter (26364): Image provider:
> AssetImage(bundle: null, name: "images/diamond.png") I/flutter
> (26364): Image key: AssetBundleImageKey(bundle:
> PlatformAssetBundle#5b025(), name: "images/diamond.png", I/flutter
> (26364):   scale: 1.0) I/flutter (26364):
> ════════════════════════════════════════════════════════════════════════════════════════════════════

这是我的 pubspec.yaml

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

这是 main.dart:

导入 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.blueGrey[900],
          title: Text('Picture Motivation'),
        ),
        body: Center(
          child: Image(
            image: AssetImage('images/diamond.png'),
          ),
        ),
      ),
    ),
  );
}

令人非常困惑的是为什么图像在模拟器上正确加载而不是在物理设备上。有什么线索吗?

非常感谢。

最佳答案

逐步执行此操作,这应该可以正常工作。基本上你做错了。

  1. Put the images in the assets folder, so the root is assets/diamond.png
  2. Or if you have another folder in your assets folder, images, then the root is assets/images/diamond.png

pubspec.yaml

flutter:
   uses-material-design: true
   //you have to give the proper path in order to get the image in your UI
   assets: 
     - assets/images/diamond.png

用户界面代码:

//this is how your image calling work, you just have to copy the path, same as pubspec.yaml
Center(
   child: Image(
      image: AssetImage('assets/images/diamond.png'),
   )
)

我相信你现在就能得到图像。让我知道是否有帮助。

关于android - Flutter 无法在物理设备上加载图像资源(但在模拟器上加载它就好了),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58335832/

相关文章:

dart - 如何在 Google Cloud SQL 和 Flutter 之间传输数据?

xcode - 无法在我的 Mac 中的设备或模拟器上构建 flutter

image - 视频文件到 flutter 中的图像流

android - 是否可以使用 Flutter 阅读谷歌地图导航通知?

android - 如何通过 Intent 启动带有文件播放的android标准媒体播放器(及其标准ui)?

java - 如何在 Android Q 中检测拨出电话号码

firebase - 如何查询 firestore 中的嵌套对象

dart - 在子Polymer元素中使用Bootjack CSS

android - 如何使用 RGB_565 创建位图?

android - ExpandableListView - 选择元素