首页 > 解决方案 > 图像资源在 Web 上加载良好,但在移动设备上不加载

问题描述

我的 Flutter 应用程序有问题。我正在尝试在我的 SplashWidget 上加载一个简单的图像,如下所示。

当我这样做时flutter run -d chrome,图像在网络(谷歌浏览器)上加载得很好。

现在,当我针对在 Marshmallow(Android 6.0)上运行的真实 Android 设备(华为 EVA LO9)进行测试时,我收到以下错误:

                    ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE
╞════════════════════════════════════════════════════
                    The following assertion was thrown resolving an image codec:
                    Unable to load asset: images/splash_icon.png
                    
                    When the exception was thrown, this was the stack:
                    #0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:227:7)
                    <asynchronous suspension>
                    #1      AssetBundleImageProvider._loadAsync
(package:flutter/src/painting/image_provider.dart:667:14)
                    <asynchronous suspension>
                    ...
                    
                    Image provider: AssetImage(bundle: null, name: "images/splash_icon.png")
                    Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#d1d58(), name:
                      "images/splash_icon.png", scale: 1.0)

这是我的 SplashWiget

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

class SplashWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      height: double.infinity,
      decoration: BoxDecoration(color: BrandColors.PRIMARY_COLOR),
      child: Center(
        child: Image(
          image: AssetImage("images/splash_icon.png"),
        ),
      ),
    );
  }
}

这是我的 pubspec.yaml

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

这是我的目录结构的屏幕截图
在此处输入图像描述

我是否需要进行任何 android 特定配置才能将此图像加载到真正的 android 设备上。我不敢相信我在这样一个简单的事情上浪费了很多时间。这很累。

有人请帮助我。

标签: flutter

解决方案


尝试做这样的事情:

  Container(
    decoration: BoxDecoration(
      image: DecorationImage(
        image: AssetImage("images/splash_icon.png"),
        fit: BoxFit.cover,
      ),
    ),
  )

首先你看看这是否运行良好,然后应用你的逻辑/风格。

告诉我这是否行不通。

也试着做一个-flutter clean。然后 -颤动运行 ;)


推荐阅读