目前使用 Flutter,很容易在运行时出现资产加载错误,因为资产是用字符串键控的,而这些字符串在分析时不会以任何方式验证(或由系统生成/提供)。
Posse 目前在其实时应用程序中最常见的崩溃是资产字符串加载失败。
他们还有一个手动的字符串常量文件,他们从他们的 pubspec.yaml 中维护(大概可以很容易地自动生成)。
这似乎是我们可以提供帮助的一种模式。 这个错误是关于寻找想法来减少这种失败的可能性。
仅供参考@yjbanov
我们可以自动生成已知资产名称的枚举,或者类似的。
我仍然热衷于提供这个,我从不知道 Flutter 团队对此有何看法。 我的 POC 从测试版开始就被冻结了。 我会想出一些足够干净的 MVP,它可以成为 PR。 很快(TM)。
大家好:
我是网易公司Fly-Mix Team的一员。 我的团队确实开发了一个 Flutter 开发工具: Flr(Flutter-R)
来支持你想要的功能。
Flr
是一个flutter资源管理器工具,可以帮助flutter开发者自动指定pubspec.yaml
中的assets,并在Android中生成r.g.dart
文件,喜欢R.java
。更改颤振项目资产。 使用r.g.dart
,flutter 开发人员可以通过引用它的资产 ID 函数在代码中应用资产,例如:
import 'package:flutter_r_demo/r.g.dart';
// test_sameName.png
var normalImageWidget = Image(
width: 200,
height: 120,
image: R.image.test_sameName(),
);
// test_sameName.gif
var gifImageWidget = Image(
image: R.mage.test_sameName_gif(),
);
// test.svg
var svgImageWidget = Image(
width: 100,
height: 100,
image: R.svg.test(width: 100, height: 100),
);
// test.json
var jsonString = await R.text.test_json();
// test.yaml
var yamlString = await R.text.test_yaml();
PS:是的,它就像Android中的AAPT(Android Asset Packaging Tool)。
截至目前,Flr 已支持 Android Studio Plugin、CLI 和 VSCode Extension:
Flr Android Studio 插件版本
Flr CLI版本
Flr VSCode 扩展版本