所以我正在构建一个火焰游戏,我找到了this template(模板附带的实际代码是here),它是由非常好的风险投资公司(它是为Google I/O制作的Pinball项目中使用的代码)制作的。
我只是在写代码,并在assets/
文件夹中添加了我的资源,到目前为止,我只需要图像,所以我删除了模板附带的所有其他资源和不必要的文件夹。我不知道如何重新生成gen/assets.gen.dart
文件来反映我对assets/
目录所做的更改。我试着运行我的应用程序,但显然得到了一个错误,因为我试图加载的资产没有定义。
我试图查找重新生成资产文件所需的命令,发现大多数解决方案都包含这行代码,它需要build_runner
、flutter_gen
和flutter_gen_runner
依赖项。
现在,如果需要的话,我不介意添加新的库,但是如果需要的话,这些库不应该在模板的pubspec.yaml
中吗?我甚至检查了Pinball项目的repo,看看他们是否必须添加这些依赖项,他们的pubspec.yaml
不包括任何runner或flutter_gen
。
无论如何,我仍然尝试添加库并运行命令flutter packages pub run build_runner build
,它设法重新生成assets.gen.dart
文件以包含我的图像并删除不必要的目录,但我仍然得到一个错误。
当我做了
loadSprite(Assets.images.ramp.path);
(just就像它们在VGV模板中所做的那样),我得到了一个红色屏幕错误,因为Assets.images.ramp.path
显然被计算为assets/images/assets/images/ramp.png
(有一个额外的assets/images/
)。
检查assets.gen.dart
文件后,VGV模板似乎创建了AssetGenImage extends AssetImage
类,而flutter packages ...
命令创建了一个AssetGenImage
,没有扩展AssetImage
。
我很确定我在这里遗漏了一些东西,因为VGV模板和I/O弹球项目都成功地重新生成了资产文件,我只是不知道我应该做什么。
(just我没有更改pubspec.yaml
中的任何其他内容,只是删除了指向我不需要的其他资产目录(如assets/audio/
)的行,并添加了3个新依赖项)
1条答案
按热度按时间v9tzhpje1#
所以你可能会得到这个错误,因为火焰默认添加了一个
assets/images/
前缀路径上的图像加载代码。这就是为什么在你的错误中,你会看到那个部分被复制。
要正确使用flutter gen(它生成资源的完整路径),只需“清除那个前缀”,只需在game类上执行此操作即可,可以将此操作作为
onLoad
方法的第一行