Flutter/외부 패키지, 라이브러리

[Flutter / dotenv] flutter에서 1분 만에 환경변수 설정하기(flutter_dotenv)

@ejayjeon 2023. 6. 30. 14:28

[Flutter / dotenv] flutter_dotenv(v.5.x.x)로 환경변수 설정하기

 

응용 프로그램 내에서 사용할 환경 변수는 보통 한 개 파일에서 관리하는 것이 바람직합니다. 특히 API Key나 DB의 패스워드와 같이 민감한 정보들은 하드코딩으로 직접 값을 넣는 대신 환경 변수 파일에서 값을 읽어서 사용해야 합니다.

 

Flutter 에서는 pub.dev에서 제공하는 flutter_dotenv 라이브러리를 이용하여 쉽게 환경 변수를 설정할 수 있습니다.
다음 절차대로 따라하면 1분 만에 설정할 수 있습니다.
(본 포스팅에서 소개할 라이브러리 버전은 v.5 이상으로, 현재(2023.06.30.) 기준 최신 버전입니다.)



1. pubspec.yamldependencies에 라이브러리 등록하기

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  flutter_dotenv: ^5.1.0

일반적으로 라이브러리를 등록하듯 dependencies 영역 안에 flutter_dotenv 라이브러리를 추가해 줍니다.
(버전은 상시 달라질 수 있지만, 버전 넘버 5가 동일하면 사용 방법은 동일합니다.)



2. pubspec.yamlassets에 사용할 .env 파일 경로 등록하기

assets:
  - .env

저는 루트 경로 안에 .env 파일을 다음과 같이 만들었습니다.

 

만약에 하단의 사진처럼 assets 이나 config 등 폴더를 만들고 그 안에 .env를 만들고 싶으면 pubspect.yaml의 설정을 다음과 같이 해주시면 됩니다.폴더 이름은 예시일 뿐입니다. 자신이 만든 폴더 명을 assets에 입력해 주세요.

assets:
  - assets/.env # 폴더 이름이 assets 일 때
  - config/.env # 폴더 이름이 config 일 때



3. main.dart 에서 .env 파일 읽어오기

import 'package:flutter_dotenv/flutter_dotenv.dart';

Future main() async {
  await dotenv.load(fileName: '.env');
  runApp(
    const MyApp(),
  );
}

runApp 실행 전에 비동기로 dotenv.load(fileName: ...) 으로 자신의 환경변수 파일을 불러옵니다. (5버전 이하는 DotEnv.load(fileName: '...')를 씁니다.)



4-1. dotenv.env['키']: .env 파일에 환경변수를 설정한 후에 화면에 불러오기

// .env

ID=abc1234

임의로 키=밸류 형식으로 .env 파일을 만들었습니다. 대입연산자를 사이로 좌측의 ID가 키가 되고, 우측의 abc1234가 값이 됩니다.

 

dotenv.env['키']

오브젝트 형식에서 키를 이용해 밸류를 찾아오는 것처럼, 임의로 설정한 키를 dotenv.env['키'] 작성해주면 입력한 값을 불러올 수 있습니다.



사용 예시)
HomeScreenText 위젯 안에서 ID 키를 활용하여 입력한 값을 불러옵니다.

import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SizedBox(
        child: Center(
          child: Text(
            dotenv.env['ID'].toString(),
            style: const TextStyle(
              fontSize: 32.0,
              fontWeight: FontWeight.bold,
            ),
          ),
        ),
      ),
    );
  }
}



4-2. dotenv.get('키'): Null Safety 방지, 화면에 값 불러오기

dotenv.get('키')

위의 dotenv.env['키'] 와의 차이점은 Null Safety 방지 여부에 있습니다. get() 메소드를 사용하면 찾고자하는 환경변수가 정의되지 않을 시 예외(Exception)을 발생시킵니다. 만약 특정한 환경변수가 정의되지 않았을 시 기본값도 지정해 줄 수도 있습니다.



(중요) .env 파일은 반드시 .gitignore에 추가하기

환경변수나 API키처럼 중요한 정보들이 저장되어 있는 만큼, 이 파일은 git public으로 올라가면 안됩니다.

*.env

.gitignore 에 위의 키워드를 추가하여 로컬에서만 환경변수를 관리할 수 있도록 해줍니다.