くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

melosでもflutter_genを使いたい(package_parameter_enabled)

Melosを使ってモノレポ構成にしてたときに、
flutter_genで設定した画像が読み込まれなかったときに、
いろいろ調査したときの備忘録(*´ω`*)

package_parameter_enabledを有効にすればよいっぽい

# pubspec.yaml
flutter_gen:
  assets:
    outputs:
      package_parameter_enabled: true # <- Add this line.

そのときの構成

構成としては、こんな感じ。

appwidgetbookの2つがあり、
widgetbookからapp/assets/icon.pngを含むWidgetを表示すると、
assetのパスが見つからずエラーになる

./
  app/
    assets/
      icon.png            # 利用しているアイコン
    lib/
      foo_component.dart  # icon.pngを使ったWidget
    pubspec.yaml
  widgetbook/
    lib/
      foo_component.dart  # foo_componentのカタログ
    pubspec.yaml
  melos.yaml
  pubspec.yaml

package_parameter_enabledなしでもできる

packageに、自分のパッケージ名を設定すれば、適切なパスに設定できる
が、いちいちめんどくさいし、deprecatedなので、このオプションを使うのがよい

Widget build(BuildContext context) {
  return Assets.icon.svg(
    width: 120,
    height: 120,
    package: Assets.package,
  );
}

build.yamlに設定しても有効にならない?

以下の感じで、build.yamlに設定したけど、うまく動作しなかった。
pubspec.yamlに書くほうがよさそう

targets:
  $default:
    builders:
      flutter_gen:
        options:
          assets:
            outputs:
              package_parameter_enabled: true

以上!! これで、widgetbookの活用が捗りそう(*´ω`*)