GithubHelp home page GithubHelp logo

flutter_flavor_demo's Introduction

flutter-flavor-demo

開発環境ごとにビルド設定を行う

手順

(1) Flavorクラスを定義する

参考サイト 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;
}

(2) 環境ごとに、エントリーポイント(main.dart)を定義する。

開発環境

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());
}

(3) 環境ごとに、エントリーポイントやパラメタ、Flavorを設定する。

環境 エントリーポイント パラメタ Flavor
開発環境 main_dev.dart --debug DEV
ステージング環境 main_qa.dart --release QA
本番環境 main_prod.dart --release PROD

スクリーンショット 2020-06-26 12 00 55

(4) xcodeで、環境ごとに、Configurationsを設定する。

Configurations名は、{パラメタ}-{Flavor}として設定すること。

環境 Configurations名 パラメタ Flavor
開発環境 Debug-DEV --debug DEV
ステージング環境 Release-QA --release QA
本番環境 Release-PROD --release PROD

(5)参考

Text("${FlavorConfig.instance.values.baseUrl}"

flutter_flavor_demo's People

Contributors

stv-ekushida avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.