代码之家  ›  专栏  ›  技术社区  ›  jdog

Flutter在失败的PlatformAssetBundle上崩溃

  •  0
  • jdog  · 技术社区  · 4 年前

    运行我的应用程序时,我遇到了崩溃,但由于异步调用,堆栈跟踪不够深入?我弄不清楚是什么在试图抓取图像?

    下面是我的pubspec.yaml文件的资产部分

    assets:
        - assets/
        - assets/images/
    

    使用VSCode,它会显示我引用的任何图像,或者如果我将鼠标悬停在引用上,它就会显示图像。

    @protected
      Future<ui.Codec> _loadAsync(AssetBundleImageKey key, DecoderCallback decode) async {
        ByteData data;
        // Hot reload/restart could change whether an asset bundle or key in a
        // bundle are available, or if it is a network backed bundle.
        try {
          data = await key.bundle.load(key.name);
        } on FlutterError {
          PaintingBinding.instance.imageCache.evict(key);
          rethrow;  <---- crashes here
        }
    

    我没有在代码中抓取任何外部图像(URL)。我添加了谷歌地图SDK,所以也许这是它试图抓住的东西?但不确定为什么没有堆栈跟踪?

    VSCode在我将其发送到iOS模拟器之前会看到图像。这些是它找不到的图像。它会查找文件中引用的所有其他图像。

    VScode see images

    0 回复  |  直到 4 年前
        1
  •  0
  •   MαπμQμαπkγVπ.0    2 年前

    下面是我的pubspec.yaml文件的资产部分

    assets:
        - assets/
        - assets/images/
    

    试着按照缩进 documentation .

    以下是一个示例:

    flutter:
      assets:
        - assets/my_icon.png
        - assets/background.png
    

    如果错误仍然存在,请尝试以下解决方法:

    它为我工作:

    1. 在pubspec.yaml中仅设置资产的完整路径

    例如

    assets:
        - assets/files/asset.txt
        - assets/images/icons/myicon.png
    

    整个文件夹对我不起作用 - assets/

    1. 添加 ./ 加载资产时,将其移动到资产路径的开头

    例如 rootBundle.loadString('./assets/path/to your/asset.txt

    1. flutter clean

    此外,如中所述 this comment ,使用 颤振清洁 如果你的应用程序有一些奇怪的行为,这是个好主意。