開発環境ごとにビルド設定を行う
参考サイト https://medium.com/flutter-community/flutter-ready-to-go-e59873f9d7de
パッケージを利用してもよい。 https://pub.dev/packages/flutter_flavor
import 'package:flutter/cupertino.dart';
/// Flavor
///
/// DEV : 開発環境
/// QA : ステージング環境
/// PROD : 本番環境
enum Flavor { DEV, QA, PROD }
/// 環境ごとに分けたい変数等を定義する
class FlavorValues {
final String baseUrl;
FlavorValues({@required this.baseUrl});
}
class FlavorConfig {
final Flavor flavor;
final String name;
final FlavorValues values;
static FlavorConfig _instance;
factory FlavorConfig(
{@required Flavor flavor, @required FlavorValues values}) {
_instance ??= FlavorConfig._internal(flavor, flavor.toString(), values);
return _instance;
}
FlavorConfig._internal(this.flavor, this.name, this.values);
static FlavorConfig get instance {
return _instance;
}
static bool isProduction() => _instance.flavor == Flavor.PROD;
static bool isDevelopment() => _instance.flavor == Flavor.DEV;
static bool isQA() => _instance.flavor == Flavor.QA;
}
import 'package:flutter/material.dart';
import 'package:flutterflavordemo/data/flavor.dart';
import 'package:flutterflavordemo/main/myapp.dart';
void main() {
FlavorConfig(
flavor: Flavor.DEV, values: FlavorValues(baseUrl: "https://dev"));
runApp(MyApp());
}
import 'package:flutter/material.dart';
import 'package:flutterflavordemo/data/flavor.dart';
import 'package:flutterflavordemo/main/myapp.dart';
void main() {
FlavorConfig(
flavor: Flavor.QA, values: FlavorValues(baseUrl: "https://qa"));
runApp(MyApp());
}
import 'package:flutter/material.dart';
import 'package:flutterflavordemo/data/flavor.dart';
import 'package:flutterflavordemo/main/myapp.dart';
void main() {
FlavorConfig(
flavor: Flavor.PROD, values: FlavorValues(baseUrl: "https://prod"));
runApp(MyApp());
}
環境 | エントリーポイント | パラメタ | Flavor |
---|---|---|---|
開発環境 | main_dev.dart | --debug | DEV |
ステージング環境 | main_qa.dart | --release | QA |
本番環境 | main_prod.dart | --release | PROD |
Configurations名は、{パラメタ}-{Flavor}として設定すること。
環境 | Configurations名 | パラメタ | Flavor |
---|---|---|---|
開発環境 | Debug-DEV | --debug | DEV |
ステージング環境 | Release-QA | --release | QA |
本番環境 | Release-PROD | --release | PROD |
Text("${FlavorConfig.instance.values.baseUrl}"