Flutter: Would like to be able to avoid asset load errors at runtime

Created on 2 Aug 2017  ·  3Comments  ·  Source: flutter/flutter

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

P5 assets framework passed first triage tool

All 3 comments

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:

  1. Flr Android Studio Plugin Version

  2. Flr CLI Version

  3. Flr VSCode Extension Version

Was this page helpful?
0 / 5 - 0 ratings