Flutterの実行時に渡す引数で実行環境を切り替える方法
Flutterで開発をしていると接続先のサーバを本番環境と開発環境を切り替えて使いたいときがあったりします。
そのようなときに毎回コードを書き換えて接続先を変えるのではなく実行時に渡す引数で切り替えれるようにします。
変数の設定
変数を設定するために専用のFunctionを定義します。
void selectEnv(){
const env = String.fromEnvironment("BUILD_ENV");
switch(enc){
case "DEV":
developModeInit();
break;
case "Pro":
productionModeInit();
break;
default:
developModeInit();
}
}
このFunctionの中では String.fromEnvironment
を使って実行時に渡される引数を取得します。
今回は BUILD_ENV
という変数名にしています。
その後それぞれ変数の値によってinit用のFunctionを実行しています。
また引数が渡されなかった場合は開発環境(developModeInit)を実行するようにしています。
Flutterアプリに仕込む
このFunctionを実際のFlutterアプリへ仕込んでいきます。
void main(){
WidgetsFlutterBinding.ensureInitialized();
selectEnv();
runApp(child: MyApp());
}
void selectEnv(){
const env = String.fromEnvironment("BUILD_ENV");
switch(enc){
case "DEV":
developModeInit();
break;
case "Pro":
productionModeInit();
break;
default:
developModeInit();
}
}
今回はmainの中で呼び出していますが必要によって適宜変更してください。
runAppの前に呼び出すため WidgetsFlutterBinding.ensureInitialized()
を使いFlutter engine を用意しています。
実行する
後はflutter run や flutter build を実行すればアプリの起動ができますがこのタイミングで引数を渡してあげます。
引数を渡すオプションは --dart-define
を使用します。
開発環境で起動する
開発環境で起動する場合は何も引数を渡さないか以下のオプションをつけて実行します。
flutter run --dart-define=BUILD_ENV=DEV
これで変数 BUILD_ENV
に DEV
を渡すことができます。
本番環境で起動する
本番環境の起動は必ず引数で指定する必要があるため先程と同じオプションをつけてPRO
をしています。
flutter run --dart-define=BUILD_ENV=PRO
これで本番環境での起動ができるようのなりました。
その他
flutter build を実行する際も同じオプションが使えます。
flutter build --dart-define=BUILD_ENV=DEV #開発環境
flutter build --dart-define=BUILD_ENV=PRO #本番環境