vue3로 개발할때 config에 난 env 설정을 하여 개발, 운영, 로컬를 두고 운영을한다. 근데? 지금 사용하는 flutter에선
// 노선임님
// const String apiBaseUrl = "http://";
// 유진 기공 URL
// const String apiBaseUrl = "http://";
// Oilfield NEX
// const String apiBaseUrl = "https://";
// 찬이 로컬
const String apiBaseUrl = "http://10.10.0.208:3000";
이런식으로 더럽게 사용했었다… 바쁘단 핑계로 env 설정할 시간이 없었으니? 근데 이젠 못보겠다 싶어서 flutter에서 env 설정을 해주기로 마음먹었다.
lib/ 경로에 env.dart 파일을 만들어주었다.
// lib/env.dart
import 'package:flutter_dotenv/flutter_dotenv.dart';
class Env {
static String get apiBaseUrl {
final url = dotenv.env['API_BASE_URL'];
if (url == null || url.isEmpty) {
throw Exception('API_BASE_URL 미설정');
}
return url;
}
static String get webViewBaseUrl {
final url = dotenv.env['WEBVIEW_BASE_URL'];
if (url == null || url.isEmpty) {
throw Exception('WEBVIEW_BASE_URL 미설정');
}
return url;
}
}
이렇게 class를 만들어 Env에서 api요청 webview요청 url을 각각 리턴하도록 설계했다.
import 'package:web_view/env.dart'; // env 설정
이제 이렇게 요청하는 곳에서 바로 가져다 쓸 수 있어서 편해졌다.
final Uri uri = Uri.parse('${Env.apiBaseUrl}/api/auth/socialLogin/google');
이제 그럼? 어떤 라이브러리를 사용했는가~?
import 'package:flutter_dotenv/flutter_dotenv.dart';
그리고 프로젝트 경로에
.env.development
.env.local
.env.production
이렇게 env 파일 3가지를 만들어주었다.
# 1) 로컬(직접 디바이스/에뮬레이터에 바로 띄워볼 때)
flutter run --dart-define=ENV=local
# 2) 개발 서버 연결 (디버그 모드로 개발서버에 붙어서 테스트)
flutter run --dart-define=ENV=development
# 3) 운영 서버용 릴리즈 빌드 (APK)
flutter build apk --release --dart-define=ENV=production
# (iOS 릴리즈가 필요하면)
flutter build ios --release --dart-define=ENV=production
이제 이렇게 빌드를 말면 env가 자동으로 로드하여 사용할 수 있다.
Share article