如何在 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 时如何显示图像资产?