如何在 Flutter 中覆盖具有源图像的资产图像?

Posted

技术标签:

【中文标题】如何在 Flutter 中覆盖具有源图像的资产图像?【英文标题】:How can I overwrite an assets image in Flutter having a source image? 【发布时间】:2020-10-11 07:37:06 【问题描述】:

我是 Dart 和 Flutter 的新手,我无法从源图像覆盖现有资产图像。

我的尝试:

try 
 File localFile = File('assets/images/myImage.png');
 localFile.writeAsBytesSync(originFile.readAsBytesSync());
catch (e) 
 log(e.toString());

我明白了:

[log] FileSystemException: Cannot open file, path = 'assets/images/myImage.png' (OS Error: No such file or directory, errno = 2)

我确实在 pubspec.yaml 中定义了 assets 文件夹:

 assets:
    - assets/images/

好的,所以我在某处读到可以像这样访问资产文件:

import 'package:flutter/services.dart' show rootBundle;
final byteData = await rootBundle.load('assets/images/myImage.png');

但我不知道如何将 byteData 转换为代表实际文件的 File 对象。

我想我在这里遗漏了一些非常基本的东西。或者也许有一种与这种方法无关的正确方法来做到这一点?

请帮忙。

提前致谢!

【问题讨论】:

【参考方案1】:

如果你想在用户设备上写入文件,你应该看这里:https://flutter.dev/docs/cookbook/persistence/reading-writing-files

共享首选项是手机中的一个空间,您可以在其中编写应用程序,因此这正是您想要的!

资产是您应用的一部分,不能在应用内修改。

在构建期间,Flutter 将资产放入一个名为 应用程序在运行时读取的资产包。 According to the flutter website

希望这会有所帮助!

【讨论】:

以上是关于如何在 Flutter 中覆盖具有源图像的资产图像?的主要内容,如果未能解决你的问题,请参考以下文章

将 Flutter 应用迁移到 Flutter Web 时如何显示图像资产?

如何在 Flutter web 上显示资产图像?

在 Flutter 的 GridView 中显示资产图像?

OpenCV中具有容差的模板匹配

行中图像的动态列表,带有换行符(之间没有空格),允许长按图像打开编辑选项 - Flutter

如何获得一个数组/列表,其中填充了我在 Flutter 中作为资产加载的所有图像路径?