environment
environment ์ ์ฑ
์
๋ณ์๋ช ์์ ์ถ๋ก ํ ์ ์๋ฏ์ด ํ๊ฒฝ ๋ถ๋ฆฌ๋ฅผ ์ํด ๋ง๋ ๊ฐ์ฒด๋ค. ํต์ฌ์ ์ฑ์ ์ง์ ์ ์ฌ์ฉ๋๋ main ์์ enum ์ผ๋ก ํ์ ์ ์ ์ ์ผ๋ก ๊ตฌ๋ถํด์ ์ฌ์ฉํ์ฌ ์ํ๋ ํ๊ฒฝ์ ์ฑ์ ์คํ ์ํค๋๋ก ํ๋ค.
๋ฌ๋ฆฌ ๋งํด, ์ํธ๋ฆฌ ํฌ์ธํธ์ ์ฝ๋๋ฅผ ์์ ์ ํด๋๊ณ ์ํธ๋ฆฌ ํฌ์ธํธ๋ฅผ ์ํ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ค์ ํ์ฌ ์ฑ์ ๋น๋ํ๋ ๊ฒ์ด๋ค.
๋ชจ๋ฐ์ผ์์์ ํ๊ฒฝ๋ถ๋ฆฌ๋ ๋ฌด์์ ์๋ฏธํ๋๊ฐ
์๋ฒ์์ ํ๊ฒฝ ๋ถ๋ฆฌ์ ๋ชฉ์ ๊ณผ ๊ฐ๋ค. ํฐ ํ์์ ๊ฒฐ๊ตญ ์ํ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ์ค์ ๊ฐ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ด๋ค. ์คํ๋ง์ผ๋ก ์น์๋ฉด ํ๋กํผํฐ๋ฅผ ๊ตฌ๋ถํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
๊ตฌ์ฒด์ ์ผ๋ก ์๋ฅผ ๋ค์๋ฉด ์ฑ๋ ๋น์ฐํ ํ๊ฒฝ๋ง๋ค ๋ฐ๋ผ๋ด์ผํ ์๋ํฌ์ธํธ๊ฐ ๋ค๋ฅผ ๊ฒ์ด๊ณ , ์ฌ์ฉํด์ผํ ์ธ๋ถ ์๋น์ค์ ๋ํ ํ ํฐ ๊ฐ ๋ฑ๋ ๋ค๋ฅผ ์ ์๋ค. ์ด๋ฐ ๋ชจ๋ ์์๋ค์ ๋์ผํ ์ฝ๋๋ฒ ์ด์ค์์ ํ๊ฒฝ๋ง๋ค ๋ค๋ฅด๊ฒ ์ธํ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด 'ํ๊ฒฝ๋ถ๋ฆฌ' ๋ผ๋ ํ์์ ๋ชฉ์ ์ด๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ environment ๊ฐ์ฒด๋ ์ ํด์ง ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค์ ๊ฐ์ ๊ฐ์ง๋ configuration ์ฑ๊ฒฉ์ ์ ์ ๊ฐ์ฒด(๊ฐ์ฒด๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ํ๋ค๊ธฐ๋ณด๋ค ์ผ๋ฐฉ์ ์ผ๋ก ์ค์ ๊ฐ์ ์ ๊ณตํด์ฃผ๋) ๋ผ๊ณ ๋ณผ ์ ์๋ค.
ํจํค์ง ๊ตฌ์กฐ
ํ์ฌ ํ ํ๋ฆฟ ์ฝ๋์ ์ด๋ฐ์ด๋ผ์ ๋ค๋ฅธ ๋ ์ด์ด๋ค๋ ๋ค์ด๊ฐ๋๋ฐ application > environments ๋ง ๋ณด๋ฉด ๋๋ค.

environment ๊ตฌํ ์ค๋ช
local.dart
import '../../barrel.dart';
import 'environment.dart';
void main() {
final Environment environment =
Environment.newInstance(EnvironmentType.LOCAL);
environment.run();
}
enum EnvironmentType {
LOCAL,
DEVELOPMENT,
PRODUCTION,
}
์์ ๊ฐ์ด ๊ฐ ์ํธ๋ฆฌ ํฌ์ธํธ(local.dart, development.dart, production.dart) ๋ง๋ค enum ์ผ๋ก ํ๊ฒฝ์ ๋ค๋ฅด๊ฒ ์ค์ ํด๋๊ณ ์ํธ๋ฆฌ ํฌ์ธํธ๋ฅผ ์ ํํด์ ๋น๋ํ๋ ์๋ฆฌ์ด๋ค.
import 'package:flutter/material.dart';
import '../../barrel.dart';
class Environment {
Environment._(this._environmentType);
static Environment? _instance;
final EnvironmentType _environmentType;
static get isLocal => _instance!._environmentType == EnvironmentType.LOCAL;
static get isDevelopment =>
_instance!._environmentType == EnvironmentType.DEVELOPMENT;
static get isProduction =>
_instance!._environmentType == EnvironmentType.PRODUCTION;
static newInstance(EnvironmentType environmentType) {
_instance ??= Environment._(environmentType);
return _instance!;
}
static get baseUrl {
switch (_instance!._environmentType) {
case EnvironmentType.LOCAL:
return 'http://localhost:8080';
case EnvironmentType.DEVELOPMENT:
return 'https://dev.example.com';
case EnvironmentType.PRODUCTION:
return 'https://example.com';
default:
return 'http://localhost:8080';
}
}
run() {
runApp(const AppName());
}
}
์ ํ์ ์ธ ์ฑ๊ธํค ํจํด์ด๊ธด ํ๋ฐ ๋ฉํฐ ์ค๋ ๋๊ฐ ๊ฐ์๋์ด ์์ง๋ ์๋ค. ์๋๋ฉด ๊ฐ์ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฑ ์คํ์ main ์ด ์ต์ด๋ก ๋จ๊ฑด์ผ๋ก ์คํ ๋๋ ๊ฒ์ด๋ฏ๋ก newInstance() ์ ๋ ์ค๋ ๋๊ฐ ๊ฐ์ด ์ง์ ํ ์ผ์ ์๋ค.
์ฌ๊ธฐ์ ๋ค๊ตญ์ด ์ฒ๋ฆฌ๋ ํ๋ฌํฐ ์์ง์ ๋ํ ๋ฐ์ธ๋ฉ ์ด๊ธฐํ ๋ฑ์ ํด์ค์ผํ๋๋ฐ ์ด๊ฑด ๊ทธ๊ฑธ ์ ๋ฆฌํ ๋ ๊ฐ์ด ์ ๋ฆฌํ๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ๋ค. ์๋ํ๋ฉด ์ง๊ธ์ environment ์ ์ฉ๋๋ง ๊ตฌํ๋ ์ฝ๋๊ฐ ์๋ ๊ฒ์ด ๋ ๋ด์ฉ์ ์์ง๊ฐ ๋๋ฌ๋๋ ๋ฐ์ ์ข์ ๊ฒ ๊ฐ์์์ด๋ค.
Last updated