无法加载资产颤振(不是资产是保存的文件)
Posted
技术标签:
【中文标题】无法加载资产颤振(不是资产是保存的文件)【英文标题】: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块,同时记录错误和堆栈 【参考方案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运行后再次创建。以上是关于无法加载资产颤振(不是资产是保存的文件)的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 无法在物理设备上加载图像资产(但在模拟器上加载它就好了)