다른 언어들을 사용하다 보면 환경변수 설정을 코드 Level에서 정의하는 것이 아니라 .env
파일을 구성하여 애플리케이션이 Load 될 때 읽어와 사용한다.
Flutter에서는 어떻게 하는지 간단히 알아보겠다.
역시 다른 언어들의 라이브러리와 동일하게 dotenv
를 제공해주는 라이브러릴 쉽게 찾을 수 있었다.
dependencies:
flutter:
sdk: flutter
# ...
flutter_dotenv: ^5.1.0
.env
파일을 assets에 추가하기.env
파일을 Flutter에 포함될 수 있도록 assets에 추가한다.
flutter:
# ...
assets:
- .env
.env
파일 로드하기// --dart-define=SOME_VAR=SOME_VALUE
void main() async {
// 1
WidgetsFlutterBinding.ensureInitialized();
// 2
const envName = String.fromEnvironment('env', defaultValue: 'dev');
// 3
await dotenv.load(fileName: './env/env.$envName');
runApp(const _App());
}
WidgetsFlutterBinding.ensureInitialized();
는 Flutter 프레임워크가 준비가 되어있는지 Check하는 코드이다. flutter_dotenv
라이브러리는 flutter 위에서 동작되다 보니 Flutter가 준비되어야 사용이 가능하기 때문이다.
dotenv
를 사용하는 면에서는 필수적인 코드는 아니지만 앱을 실행할 때 환경에 따라 다른 env
를 사용하기 위해 정의하였다. String.fromEnvironment
코드를 통해 앱을 실행할 때 정의한 변수를 가져올 수 있으며 변수를 정의하는 방법은 아래와 같다.
flutter run --dart-define=SOME_VAR=SOME_VALUE --dart-define=OTHER_VAR=OTHER_VALUE
# or
flutter build --dart-define=SOME_VAR=SOME_VALUE --dart-define=OTHER_VAR=OTHER_VALUE
flutter_dotenv
라이브러리를 이용하여 미리 정의한 환경변수 파일을 load한다.사용하는 곳에서는 아래와 같이 get
을 이용하면 된다. 만약 NullSafe
를 사용하고자 한다면 maybeGet
을 이용하면 된다.
추가적으로 없을 때 default 환견변수를 fallback
이라는 인자를 정의하여 더욱 안전하게 사용할 수 있다.
dotenv.get('환경변수 키 값');
dotenv.maybeGet('환경변수 키 값', fallback: null)