플러터(flutter)

flutter_dotenv을 사용해서 local에 API Key 보관하기

기계공학 주인장 2023. 8. 11. 15:49
반응형

안드로이드에서 API Key 같은 것을 Project 내에 보관해서 사용할 때는

 

local.properties에 값을 저장해서 사용하곤 했다.

 

하지만, 해당 방법을 flutter에서 사용하기 쉽지 않기 때문에

 

플러터의 flutter_dotenv 라이브러리를 사용해서 비슷한 기능을 실현할 수 있다.

 

참고로 해당 방법은 플러터의 패키지를 사용하기 때문에

 

Android / iOS 둘 다 사용할 수 있다


flutter_dotenv 패키지 설치 및 셋업 하기

해당 사이트에서 설치 방법을 찾을 수 있다.

 

 

flutter_dotenv | Flutter Package

Easily configure any flutter application with global variables using a `.env` file.

pub.dev

 

이 이후에 몇 가지 셋업을 해야 사용할 수 있다.


프로젝트의 root 디렉토리에 .env 파일을 생성한다.

다음과 같이 파일을 생성한다.

 

 

참고로 파일이름은 꼭 .env일 필요는 없다.

 

그렇기 때문에 다음과 같이 설정해서 사용하는 방법도 가능하다.

 

dev.env - 개발 및 디버그용으로 사용
public.env - 배포용으로 사용

 


.env 파일 안에 API Key 같은 데이터 입력하기

다음과 같이 Map 형태로 데이터를 입력해 주면 된다.

google_apiKey=ABCDF12345

 


pubspec.yaml에 assets:으로 해당 파일 등록하기

pubspec.yaml에 다음과 같은 코드를 등록해줘야 한다.

 

# The following section is specific to Flutter packages.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # 아래의 assets 부분을 추가해준다.
  assets:
    - .env

 

물론 다른 이름으로 했다면 .env를 해당 이름으로 바꿔준다.

 


.gitignore에 등록하기

.env 파일은 github에 업로드되선 안되기 때문에 .gitignore에 등록해야 한다.

 

# Exclude Secret data file
.env

 


flutter_dotenv사용하기

flutter_dotenv  초기화

flutter_dotenv를 앱을 처음 실행했을 때 초기화하도록 해야 한다.

 

import 'package:flutter_dotenv/flutter_dotenv.dart';

// DotEnv dotenv = DotEnv() is automatically called during import.
// If you want to load multiple dotenv files or name your dotenv object differently, you can do the following and import the singleton into the relavant files:
// DotEnv another_dotenv = DotEnv()

Future main() async {
  // 초기화를 실시한다.
  await dotenv.load(fileName: ".env");
  //...runapp
}

 


dotenv.env를 사용해서 .env에 저장되어 있는 값 불러오기

다음과 같은 코드를 사용하여 어디서든 .env에 저장되어 있는 값을 불러올 수 있다.

 

import 'package:flutter_dotenv/flutter_dotenv.dart';
dotenv.env['google_apiKey'];

 

참고로 위 코드는 패키지 버전이 5.0.0 이상일 때만 사용할 수 있고 5.0.0 미만 버전일 때는 아래와 같은 방법을 사용해야 한다.

 

import 'package:flutter_dotenv/flutter_dotenv.dart' as DotEnv;

Future main() async {
  // 초기화 (5.0.0 이상일 때와 다름)
  await DotEnv.load(fileName: ".env");
  //...runapp
}

 

그리고 다음과 같은 방법으로 사용할 수 있다.

import 'package:flutter_dotenv/flutter_dotenv.dart';
env['google_apiKey'];

 

 

flutter에서 화면 회전 하지 못하게 막는 방법

앱을 만들 때 가로 모드 UI를 별도로 구현하지 않는 이상 휴대폰을 가로로 회전 시 앱이 같이 돌지 않게 해야 합니다. 안드로이드에서는 간단했지만 flutter에서는 조금 복잡한데 flutter에서 세로

android-developer.tistory.com

 

반응형