이번에 사용해 볼 패키지는 flutter_dotenv라는 패키지입니다.
1. dotenv 가 무엇일까요?
설명에는 애플리케이션 전체에서 사용할 수 있는 .env 파일을 런타임에 구성을 로드하는 방법이라고 적혀 있습니다. 그렇다면 .env 파일은 어떠한 파일일까요?
env 파일이란 애플리케이션의 구성 변수를 저장하는 텍스트 파일입니다. 일반적으로 ".env"라는 이름의 파일로 저장되며, 각 줄은 키-값 쌍으로 구성되어 있습니다. 구성 변수는 애플리케이션의 동작에 영향을 주는 설정 값들을 나타냅니다. 예를 들어서 api-key, 서버 URL 등 외부로 공개하기 민감한 구성 변수들을 저장하는 파일입니다.
한마디로 dotenv는 Flutter에서 env파일을 관리하고 쉽게 사용할 수 있게 도와주는 패키지입니다.
2. dotenv 사용해 보기
(1) 패키지 설치
https://pub.dev/packages/flutter_dotenv/install
(2) .env 파일 생성
프로젝트 루트에 .env 파일을 생성해야 합니다.
프로젝트 루트 > New > File > .env 이름으로 파일 생성
이렇게 하면 .env 파일 생성되어 안에 텍스트를 작성할 수 있습니다.
(3) pubspec.yaml 에 .env 파일 등록
외부 파일인 .env 파일을 프로젝트에서 읽을 수 있도록 pubspec.yaml 에 assets: 에 사진처럼 등록시켜 줍니다.
(4) .env 파일에 구성 변수 작성
env 파일에 키=값 쌍으로 사진처럼 작성해야 합니다. Map<String,String> 구조입니다. 즉 ["JU"] = "ju"를 반환합니다. $를 사용해서 이어 붙일 수도 있습니다. 여기에는 본인의 애플리케이션 구성 변수등을 작성해 주면 됩니다.
(5) main() 함수 작성
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // 1번코드
await dotenv.load(fileName: ".env"); // 2번코드
runApp(const MyApp());
}
1번코드는 여기서 간단하게 알 수 있습니다.
2번 코드에서 dotenv.load() 를 통해서 .env파일을 런타임에 가져오는 작업을 합니다. load() 함수는 비동기 함수이기 때문에 해당 작업이 끝난 후 runApp을 하기 위해서 await을 걸어 줍니다. 해당 작업을 하면 .env 파일에 작성한 구성 변수들을 사용할 수 있습니다.
(6) 구성변수 사용하기
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
String ju = dotenv.get("JU");
String tole = dotenv.get("TOLE");
String juTole = dotenv.get("JUTOLE");
String apiAddress = dotenv.get("API_ADDRESS");
return MaterialApp(
home: Scaffold(
body: Center(
child: Text(
"$ju\n$tole\n$juTole\n$apiAddress"
),
),
),
);
}
}
dotenv.get("키값") 으로 .env파일에 작성한 값들을 String으로 반환받습니다. 이렇게 해서 flutter_dotenv 를 사용하는 법을 알아보았습니다.
3. 추가기능 설명
(1) merge
await dotenv.load(fileName: ".env", mergeWith: {"HELLOWORLD" : "hello-world"});
dotenv.load 시에 .env 파일에 있는 구성변수 외에 추가로 사용하고 싶은 구성변수를 mergeWith를 통해 같이 merge 시킬 수 있습니다. 대신에 Map<String,String> 으로 넣어야 합니다.
(2) null 처리
String a = dotenv.get("A", fallback: "a");
String? b = dotenv.maybeGet("B", fallback: null);
dotenv.get() 시에 "A" 라는 키가 없어서 가져올 값이 없을 때 fallback을 설정하면 키가 없을 때 대신해서 반환해줍니다.
dotenv.maybeGet()을 사용하면 키가 없을 때 null을 반환해 줄 수 있습니다.
'Flutter > 기본' 카테고리의 다른 글
[Flutter] 상태 표시줄 또는 스테이터스 바 설정하기 (0) | 2023.06.22 |
---|---|
[Flutter] 람다함수없이 코드를 짜는 방법 feat. Tear-offs (0) | 2023.06.15 |
[Flutter] Text에 밑줄, 윗줄, 취소선 추가하기 (0) | 2023.05.30 |
[Flutter] static 키워드 (4) | 2023.04.18 |
[Flutter] Container Gradient 설정하기 (0) | 2023.04.14 |