search
LoginSignup
0

posted at

updated at

Organization

Flutterの実行時に渡す引数で実行環境を切り替える方法

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_ENVDEV を渡すことができます。

本番環境で起動する

本番環境の起動は必ず引数で指定する必要があるため先程と同じオプションをつけてPROをしています。

flutter run --dart-define=BUILD_ENV=PRO

これで本番環境での起動ができるようのなりました。

その他

flutter build を実行する際も同じオプションが使えます。

flutter build --dart-define=BUILD_ENV=DEV #開発環境
flutter build --dart-define=BUILD_ENV=PRO #本番環境

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
What you can do with signing up
0