【问题标题】:AssetImage is not displaying image in flutter appAssetImage 未在颤振应用程序中显示图像
【发布时间】:2019-02-01 15:43:03
【问题描述】:

图像未在颤振应用中显示。 但是我在调​​试控制台中遇到了一些错误。

I/FlutterActivityDelegate(22603): onResume setting current activity to this
I/FlutterActivityDelegate(22603): onResume setting current activity to this
I/Timeline(22603): Timeline: Activity_idle id: android.os.BinderProxy@3eb59326 time:39937973
I/flutter (22603): ══╡ EXCEPTION CAUGHT BY SERVICES ╞══════════════════════════════════════════════════════════════════
I/flutter (22603): The following assertion was thrown resolving an image codec:
I/flutter (22603): Unable to load asset: assets/images/logo.png
I/flutter (22603): When the exception was thrown, this was the stack:
I/flutter (22603): #0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:221:7)
I/flutter (22603): <asynchronous suspension>
I/flutter (22603): #1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:383:44)
I/flutter (22603): <asynchronous suspension>
I/flutter (22603): #2      AssetBundleImageProvider.load (package:flutter/src/painting/image_provider.dart:368:14)
I/flutter (22603): #3      ImageProvider.resolve.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:265:86)
I/flutter (22603): #4      ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:82:22)
I/flutter (22603): #5      ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:265:63)
I/flutter (22603): (elided 8 frames from package dart:async)
I/flutter (22603): Image provider: AssetImage(bundle: null, name: "assets/images/logo.png")
I/flutter (22603): Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#19ce7(), name: "assets/images/logo.png",
I/flutter (22603): scale: 1.0)
I/flutter (22603): ════════════════════════════════════════════════════════════════════════════════════════════════════
D/ViewRootImpl(22603): ViewPostImeInputStage ACTION_DOWN
D/ViewRootImpl(22603): ViewPostImeInputStage ACTION_DOWN

我的 Pubspec.yaml 文件

资产: - 资产/图像/logo.png

login.dart 代码

new Image.asset("assets/images/logo.png", width: 60.0, 身高:24.0, 适合:BoxFit.cover)

目录结构


pubspec.yaml 文件

【问题讨论】:

  • 同时截取您的 pubspec.yaml 文件

标签: dart flutter


【解决方案1】:

我以错误的方式提及图像文件。我在“-”和图像名称之间放置空格而不是制表符。

资产:

- assets/images/logo.png

不要在 pubspec.yaml 文件中的字符而不是制表符之间放置空格

【讨论】:

    【解决方案2】:

    可能有两个问题:

    1.) 您的 pubspec.yaml 文件没有适当的缩进。附上sn-p供参考。

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

    - assets/ 将考虑目录中的所有图像。

    2.)如果您使用的是 .jpg 图片,请在您调用的任何地方将其更改为 .jpeg。

    附上sn-p供大家参考

    class _UserLoginState extends State<UserLogin> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Stack(
            children: <Widget>[
              Image(image: AssetImage("assets/christmas.jpeg"),
              fit: BoxFit.cover,
            ],
          )
        );
      }
    } 
    

    【讨论】:

    • 我的问题是缩进不正确。作为 Flutter 的新手,我只需按退格键删除 #,这会使关键字“资产”发送到行首。
    【解决方案3】:

    确保您在 Image.asset 中引用的文件夹包含该文件。

    例如:

    Image.asset(
    "./assets/images/loading.gif",
    height: 125.0,
    width: 125.0,
    )
    

    文件夹应该是:

    C:\your_app_folder\assets\images
    

    pubspec.yaml:

      assets:
        - assets/
        - assets/images/
    

    运行 flutter clean 清理中间文件并刷新。

    【讨论】:

      【解决方案4】:

      我假设您将文件复制到 assets/images/ 文件夹中,对吗? 您还需要将您的图像引用到pubspec.yaml 文件中。

        flutter:
      
        ...
      
          assets:
            - assets/images/logo.png
      

      【讨论】:

      • 我还添加了 pubspec.yaml
      • 你能输入你用来显示图像的代码吗?并将 pubspec.yaml 放入您的问题中。
      • @syamlal ,您的文件 logo.png 位于何处?你能把你的项目树目录截图吗?
      【解决方案5】:

      Hot Reload 是我的问题。我只是重新启动了 Android Studio 并重新运行了该应用程序,一切正常!

      【讨论】:

        【解决方案6】:

        确保您的图像文件夹位于项目文件夹中。

        【讨论】:

          【解决方案7】:

          参考https://api.flutter.dev/flutter/painting/AssetImage-class.html

          在 pubspec.yaml 文件中添加资产图像,并在资产中提及 images 的路径,它可以正常工作。

           new AssetImage("images/logo.png")
          

          例如

          CircleAvatar(
            radius: 80,
            backgroundImage: AssetImage('images/logo.png'),
           ),
          

          【讨论】:

          • 感谢您对其他正确答案采取行动的好意。在检查我们的环境后,我们已经给出了问题的解决方案。请通过链接api.flutter.dev/flutter/painting/AssetImage-class.html并确认使用上述代码,用户可以使用上述代码(AssetImage)加载图像
          【解决方案8】:

          我刚换了

          Image.asset("assets\images\_Lightweight.jpeg"),
          

          Image.asset("assets/images/_Lightweight.jpeg"),
          

          【讨论】:

            【解决方案9】:

            我的问题是资产部分的缩进。我写在行首,而它应该在颤振后缩进一个Tab:节。

            罗比

            【讨论】:

              【解决方案10】:
              1. Flutter 不支持 jpg 文件。
              2. 使用“/”(正斜杠)尝试文件的完整路径。

              【讨论】:

                【解决方案11】:

                将新图像添加到资产文件夹后,我遇到了同样的问题。我正在执行“热重载”,我从后台销毁了应用程序,重新运行了应用程序,问题得到了解决。

                【讨论】:

                  【解决方案12】:

                  这些改变肯定会奏效。

                  AssetImage('mypicture.jpg')
                  

                  上面是我的代码,我没有在我的图像文件名中使用“assets”文件夹名称,它运行良好。

                  这些是我在“pubspec.yaml”文件中的资产。

                  assets:
                      - assets/cat.png
                      - assets/mypicture.jpg```
                  

                  【讨论】:

                  • 不需要带有斜杠的全名目录名就可以了 - assets/
                  • 但是如果你想在资产中添加选定的图片,那么你还必须写文件名。
                  【解决方案13】:

                  您的 pubspec.yaml 不正确

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

                  检查是否是这种方式。

                  【讨论】:

                    猜你喜欢
                    • 2019-08-01
                    • 2020-11-15
                    • 2020-10-10
                    • 2022-10-09
                    • 2020-09-03
                    • 2021-10-13
                    • 2021-03-05
                    相关资源
                    最近更新 更多