앱의 각종 설정 정보를 저장할 때 사용되는 텍스트 파일로, 서버 환경 옵션이나 API KEY와 같이 민감하거나 노출되어서는 안되는 설정을 저장하여 사용하는 데 도움이 됩니다.
일반적으로 파일명은 ‘ .env ’ 로 설정하며 내부 값은 키 - 값으로 구성되어 있음과 동시에 해당 파일은 숨김 파일로 처리되기에 탐색기에서 보이지 않습니다.
내부 값 예시
API_KEY='api_key'
SERVER_MODE='product'
dependencies:
flutter:
sdk: flutter
flutter_dotenv: ^x.x.x # x.x.x는 패키지 버전입니다.
pubspec.yaml
파일에 flutter_dotenv
패키지를 추가한 후 flutter pub get
명령를 통해 패키지를 가져옵니다.
API_KEY='api_key'
SERVER_MODE='product'
원하는 프로젝트 파일 속에 .env 파일을 생성하고 내부에 필요한 변수를 작성합니다.
해당 변수명과 값은 이후 Map<String, String>의 형식으로 사용됩니다.
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
Future<void> main() async {
await dotenv.load(fileName: '자신의 .env 파일 위치');
// ex) dotenv.load(fileName: 'assets/config/.env')
runApp(MyApp());
}
.env 파일을 사용하기 위해서는 패키지를 통해 해당 파일을 먼저 가져와야만 합니다.
해당 작업을 진행하지 않는다면 오류가 발생하므로, 위와 같이 앱 시작 시 main.dart 파일에서 로드를 설정해 줍니다.
assets:
- assets/config/.env
import 'package:flutter_dotenv/flutter_dotenv.dart';
void getServerMode(){
String serverMode = dotenv.env['SERVER_MODE'];
print("now server mode is $serverMode");
}
위의 과정을 전부 거쳤다면 이후에는 dotenv.env[’원하는 설정 KEY 값’]
을 통해 .env 값을 불러와 사용 가능합니다.
해당 패키지 깃허브 README.md 문서에 test 혹은 Null safety 등 더욱 정교한 사용 정보들이 있으니 필요에 따라 아래 문서를 읽으시는 것도 추천드립니다.
크롬 네트워크 탭에서 {도메인}/assets/assets/config/.env 파일이 다 노출되는거 같은데요? ㅠㅠ 이럴땐 어떻게 해결할까요 아시는 분 댓글 부탁드립니다..