62
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Flutter/コード自動生成】FlutterGenを使ってみる。

Last updated at Posted at 2020-09-08

こんにちは。最近はニホンザルにハマっているminako-phです。
※おすすめの猿山があったら教えてください

昨日、@wasabeef_jp さんが このようなTweetをされてらっしゃいました。

Flutter向けに画像リソースなどのコードを自動生成するためのツールです。

ちょうど iOS開発の時に使っていた R.swift みたいなツール無いかなーと探していたタイミングだったので、
おおお.....!!これは!!🎉 となり早速試してみました。

何ができるのか

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

この記事の概要

FlutterGenについては作者のわさびーふさんが日本語で詳しく書いてくださっているので
この記事ではシンプルにFlutterGenを導入するとこから、
コード自動生成によるコード補完を実際に体験するまでを試してみました。

FlutterGenのインストール

今回は Homebrew でインストールしました。

$ brew install FlutterGen/tap/fluttergen

インストールが終わったら使用できる事を確認してみましょう

$ fluttergen -h

今回はHomebrewを使用しましたが 他にも、
Dart Command-linebuild_runner が用意されています✔️

実際に使ってみる

コードの自動生成を実行する

今回は3種類の画像とフォントを用意しました。それぞれを assets/ 配下に配置します。

スクリーンショット_2020-09-08_1_29_10.png
pubspec.yaml に追加できたら、次にFlutterGenによるコードの自動生成を実行します。
パスはプロジェクトの pubspec.yaml へのパスを指定します。

$ fluttergen -c ./pubspec.yaml

すると一瞬でコードの生成が完了しました!
スクリーンショット_2020-09-08_0_59_35.png

実際にエディタで使用してみる

assets/images/ 配下の画像を指定したいので、Assets.images. と入力してみます。

すると以下のように、コード補完機能が使用できるようになっている事が確認できます👏!
Sep-08-2020 01-51-32.gif

これでタイポを気にせずスピーディーに実装できるようになりました!
とっても快適 ....... ><✨

公式でも解説されていますが、対象ファイルがFlutterで対応してる画像フォーマットの場合、
Assets.images.warauEbifriedAssetImage classとして使え、実際に描画する際は
Assets.images.warauEbifried.image(...) とする事で Image class として
Assets.images.warauEbifried.pathString として使えます。

  • 普通に書くと ↓
// 文字列指定する為 タイポしやすい...
Image.asset(
  'assets/images/warau_ebifried.png',
  width: 150.0,
),
  • FlutterGenを使用して書くと ↓
// Image classとして使用する. Image classが持つパラメーターを使用できます
Assets.images.warauEbifried.image(
  width: 150.0,
),

// Stringとして使用する
Image.asset(
  Assets.images.warauEbifried.path,
  width: 150.0,
),

今回のようにディレクトリ名が assets/ もしくは asset/ の場合は冗長となる為 省略されますが、
Assets.directoryName.directoryName.fileName のように階層をそのまま使用できるようになっています。

フォントでも使ってみましょう。
以下のようにStringとしてコード補完ができることが確認できます👏!
Sep-08-2020 02-14-42.gif
フォントの場合 FontFamily.notoSansJP のように指定が出来ます。

感想

ファイル名やディレクトリを追ってコピペして貼り付けて や 定数宣言して... みたいな
地味にコストのかかる作業が解消されとても快適になりました ><✨ 有り難いです ..

他にも出来ることなど詳しくは公式も是非ご覧ください!

参考

コード自動生成の FlutterGen を作りました。
Github|FlutterGen/flutter_gen
pub.dev|flutter_gen

62
46
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?