概要
- FlutterにてENViedパッケージを利用しようとした際、env.g.dartの生成時エラーを吐いたのでその解決法の共有目的で書きます。
- 日本語の記事を見つけられなかったので、誰かのお役に立てれば。(Qiita初投稿なので優しく見守ってください。)
環境
MacBook Pro 2018,13-inch
Visual Studio Code
Flutter 3.16.5
起こったこと
Flutter(Dart)にてAPIキー等の秘匿化を行おうと思い、以下の記事を参考にしながらENViedパッケージの設定を進めていました。
FlutterでのAPIキーの安全な管理
しかし、記事の4における⑤の部分で、ジェネレーターの実行時に下記のエラーを吐きました。
Terminal
Environment variable not found for field `key`.
package:ルートディレクトリ/env/env.dart:8:17
上記の参考記事の通り、env.dartは以下のように記載しています。
env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: '.env')
abstract class Env {
@EnviedField(varName: 'KEY', obfuscate: true)
static String key = _Env.key;
}
エラーメッセージを見てもよくわからんのと、調べても同様の症状に悩んでる人が見つからずに格闘。
解決方法
色々調べた結果、以下のissueに辿り着きました。
Environment variable not found for field" if build_runner hasn't been run without envied
英語を頑張って読んで要約すると、次のようなことらしいです。
- enviedコードを利用せずに一度も
buid_runner
を実行していない状態で実行するとこのエラーが出る - 解決方法としては、一度この
env.dart
をコメントアウトしてからbuid_runner
を実行。その後再びenv.dart
を復元してからbuid_runner
を実行する
自分はENViedを利用するまでに一度もbuid_runner
を実行していなかったので、この原因だと思い試したところ解決しました。
まとめ
同様の症状で苦しんでいる誰かの助けになれば幸いです。