【问题标题】:Unable to load asset flutter ( not assets is a saved file )无法加载资产颤振(不是资产是保存的文件)
【发布时间】:2020-12-08 09:58:47
【问题描述】:

当用户拍摄照片或视频时,我将此文件保存到应用程序文件夹 当我尝试使用 xcode 访问保存的文件夹时,我可以毫无问题地看到图像或视频。

拍摄并保存这张照片后,应用程序可以访问图像或视频,我可以在我的应用程序中显示它

但是过了一会儿或当我关闭并重新打开手机时,此文件无法访问 但如果我想显示在使用 xcode 打开的应用程序文件夹中,我可以显示文件

这是我的保存图片代码

   Future<void> saveFile(BuildContext context, int fileType,
          {Function(String path) onComplete}) async {
        File file = await Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => fileType == 0 ? Camera() : Video()));
        if (file != null) {
          var savedFile = await getNewFile(file, fileType);
    
          if (fileType == 0) {
            GallerySaver.saveImage(savedFile.path).then((result) async {
              if (result)
                onComplete(savedFile.path);
              else
                onComplete("");
            });
          } else {
            GallerySaver.saveVideo(savedFile.path).then((result) async {
              if (result)
                onComplete(savedFile.path);
              else
                onComplete("");
            });
          }
        } else {
          onComplete("");
        }   }

Future<File> getNewFile(File file, int fileType) async {
    final Directory path = await getApplicationDocumentsDirectory();
    var fileName = UniqueKey()
            .toString()
            .replaceAll("[", "")
            .replaceAll("]", "")
            .replaceAll("#", "") +
        (fileType == 0 ? ".png" : ".mp4");

    return await file.copy('${path.path}/$fileName');
  }

您遇到错误 B4A3B.MP4 未找到,但它已经在路径中

您可以看到的图像右下角

开始加载没有问题,但过了一段时间它没有显示在我的应用程序中

【问题讨论】:

  • 是否在 pubspec.yaml 中添加了文件?
  • 不,这不是资产文件,这是保存图像文件到手机应用程序文件夹
  • 请从控制台发布整个错误,抛出异常
  • 错误是:无法加载资产 ..../documents/b4a3b.mp3
  • 一行不够,错误会包含堆栈,在加载文件时使用try catch块,同时记录错误和堆栈

标签: flutter dart flutter-layout flutter-dependencies flutter-web


【解决方案1】:

如果您更改资产文件(创建、删除、更改名称...),您必须停止,使用 flutter clean 清理然后再次运行。

【讨论】:

  • 发现错误我认为应用程序 ID 在我运行此命令“flutter-run”时发生更改,首先它说 /var/mobile/Containers/Data/Application/4EA1D0AA .... 但我调试它说 /var/mobile/Containers/Data/Application/FFD0-4DED ......它总是在改变为什么?
  • 我认为在flutter clean applicationid发生变化并且之前的文件夹被删除之后我错了吗?
  • 我不确定。可能是 /var/mobile/Containers/Data/Application/.. 被保存为缓存,所以它会在flutter clean或每次flutter运行后再次创建。
猜你喜欢
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 2019-06-22
相关资源
最近更新 更多