FlutterプロジェクトにEnviedを導入してAPI Keyを管理する!
投稿日: 2024-02-03
ChatGPTのAPI Keyを環境変数として利用するためEnviedを導入しようとしたのですが、 公式のReadme通りにやってもbuild_runner実行時にエラーが発生しました。
その対処法が見つかったのでメモを残しておきます。
開発環境
・ OS: Windows 11
・ Flutter: v3.16.5
・ Dart: v3.2.3
・ Envied: ^0.5.3
ディレクトリ構成
最終的な構成は下記の通りです。
lib/
┣ env/
┃ ┣ env.dart
┃ ┗ env.g.dart
┗ main.dart
.env.dev
.gitignore
~~~ 以下略 ~~~
下準備
.gitignoreに下記を追記してenv関連を除外しておきます。
.env*
env/
環境ファイル(.env.devとします)に利用したい環境変数の名前と値を入力します。
OPENAI_API_KEY='sk-###'
lib/env/にenv.dartを作成します。コードは下記になります。
// env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: '.env.dev')
abstract class Env {
@EnviedField(varName: 'OPENAI_API_KEY', obfuscate: true)
static final String OPENAI_API_KEY = _Env.OPENAI_API_KEY;
}
注意点として、@EnviedFieldのvarNameの値と使用する環境変数名は一致させないといけないようです。
env.g.dartを生成する
筆者の場合、Flutterプロジェクトで利用するため、以下のコマンドでEnviedをインストールします。
$ flutter pub add envied
$ flutter pub add --dev envied_generator
$ flutter pub add --dev build_runner
次にenv.g.dartを生成するコマンドを入力します。
$ dart run build_runner build --delete-conflicting-outputs
すると、lib/env/にenv.g.dartというファイルが生成されます。こちらが生成されていれば導入は完了です。
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'env.dart';
// **************************************************************************
// EnviedGenerator
// **************************************************************************
// coverage:ignore-file
// ignore_for_file: type=lint
final class _Env {
static const List<int> _enviedkeyOPENAI_API_KEY = <int>[
3044926770,
1562077553,
844297019,
1889294018,
1834524378,
~~~ 以下略 ~~~
使用例
下記のコードでコンソール上にAPI Keyの値を出力してみます。
import 'env/env.dart';
void main() {
print(Env.OPENAI_API_KEY); // sk-###
}
環境ファイルに記入した値がコンソールに出力されれば成功です。
参考リンク: