Closed4

flutter_gen を使う

Daigo WakabayashiDaigo Wakabayashi

flutter gen ってなに?

  • 自動生成により画像などのリソースファイルへアクセスできるようになる
  • 実装する時にコード補完が効くのでタイポしなくなる
  • 静的解析ができるので存在しないファイルの指定などによる実行時のエラーを防ぐ

assetのファイル(画像や音声など)を安全に扱うことの出来るパッケージ

https://pub.dev/packages/flutter_gen

https://wasabeef.medium.com/fluttergen-25149caea94f

Daigo WakabayashiDaigo Wakabayashi

インストール

https://pub.dev/packages/flutter_gen#installation

  • dart pub global activate flutter_gen

brewで入れようとしたらXcodeのバージョンやらなんやら言われたので、pubで入れた

  • pubspecに追加

build_runnerはもともと入っていたので、 genの最新を追加してpubget

dev_dependencies:
  build_runner: ^2.1.2
  flutter_gen_runner: ^4.0.0
  • fluttergen -hでインストールできたことを確認
-c, --config       Set the path of pubspec.yaml.
                   (defaults to "pubspec.yaml")
-h, --[no-]help    Help about any command

できてるっぽい

Daigo WakabayashiDaigo Wakabayashi

pubspecのパスを設定

  • fluttergen -c <プロジェクト>/pubspec.yaml

エラーが出た
ファイル名に@が入ってたらダメっぽい?

FlutterGen Loading ... orders-app/pubspec.yaml
Unhandled exception:
Could not format because the source could not be parsed:

line 31, column 34 of .: Expected an identifier.
   ╷
31 │   AssetGenImage get ueBitmapCopy@3x => const AssetGenImage('assets/images...

...
なんかいろいろ
...

ファイル名に@が入ってたらダメっぽい?

@つきのファイル(しかも使ってなかった)を削除したら通った

% fluttergen -c ./pubspec.yaml
FlutterGen Loading ... pubspec.yaml
Generated: <生成されたファイルのパス>
FlutterGen finished.

生成先も指定できるらしい

output : 自動生成されるコードの出力先を指定することができます。
他の Plugin は lib直下固定の生成になってることが多いです。
lineLength : 自動生成されるコードの Line length(コードの横幅)を指定することができます。 80 から変更することのほうが少ないと思いますが、変更している場合には自動生成されるコードも合わせておかないと flutter format コマンドで -l 100など指定している場合は差分がでてしまいます。
他の Plugin は指定することが出来ないものが多いです。

https://wasabeef.medium.com/fluttergen-25149caea94f

このスクラップは2021/10/05にクローズされました