Currently with Flutter it's very easy to end up with asset load errors at runtime since assets are keyed off of strings, which are not in any way validated at analyze time (or generated/provided by the system).
Posse's currently most common crash in their live app is a failed asset string load.
They also have a manual file of string constants that they maintain from their pubspec.yaml (presumably could be autogenerated pretty easily).
This just seems like a pattern we could help with. This bug is about finding ideas to reduce the likelihood of this kind of failure.
FYI @yjbanov
We could autogenerate an enum of known asset names, or some such.
I'm still keen to deliver this, I was never sure what was flutter team's opinion on it. My POC is frozen since the beta days. I'll come up with some MVP clean enough that it could be a PR. Soon (TM).
Hi, all:
I'm a member of Fly-Mix Team from NetEase company. My team did develop a flutter development tool: Flr(Flutter-R)
to support the feature that you want.
Flr
is a flutter resource manager tool, which can help flutter developer to auto specify assets in pubspec.yaml
and generate r.g.dart
file which likes R.java
in Android after he changes the flutter project assets. With r.g.dart
, flutter developer can apply the asset in code by referencing it's asset ID function, such as:
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: yes, it is just like the AAPT(Android Asset Packaging Tool) in Android.
Up to now, Flr has supported Android Studio Plugin, CLI, and VSCode Extension:
Flr Android Studio Plugin Version
Plugin Homepage: https://plugins.jetbrains.com/plugin/13789-flr
flr-as-plugin Usage Example Gif:
Flr CLI Version
CLI Homepage: https://rubygems.org/gems/flr
flr-cli Usage Example Gif:
Flr VSCode Extension Version
Extension Homepage: https://marketplace.visualstudio.com/items?itemName=LincolnLaw.flr
flr-vscode-extension Usage Example: