[Flutter] API 키 숨기기 (Feat. FlutterConfig Variables are Empty Ensure you have a .env file and you have loaded the variables 에러)

하스레·2023년 1월 7일
0

[방법1] flutter_config 사용: 에러 발생

  1. 최상위 폴더에 .env 파일을 추가한 후 다음과 같이 숨기고 싶은 api 키를 넣어준다.
appKey = "어쩌구저쩌구앱키"
  1. .gitignore에 다음 한줄을 추가한다.
.env*
  1. flutter_config 라이브러리를 추가한다.
$ flutter pub add flutter_config
  1. main.dart에 다음 코드를 추가한다.
void main() async {
  WidgetsFlutterBinding.ensureInitialized(); // 추가
  await FlutterConfig.loadEnvVariables(); // 추가
  
  runApp(const MyApp());
}
  1. android/app/build.gradle에 다음 코드를 찾는다.

    그 밑에 다음 한줄을 추가한다.
from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle"
  1. 다음과 같이 FlutterConfig.get('숨긴키변수명')를 사용하여 숨긴 key를 사용할 수 있다.
void main() async {
  WidgetsFlutterBinding.ensureInitialized(); 
  await FlutterConfig.loadEnvVariables(); 

  KakaoSdk.init(nativeAppKey: FlutterConfig.get('appKey'));
  
  runApp(const MyApp());
}
  1. 그런데 다음과 같은 에러가 발생하며 variable을 가져올 수 없었다.
FlutterConfig Variables are Empty
Ensure you have a .env file and you
 have loaded the variables

구글링을 아무리 해봐도 원인을 찾기 힘들어 다음의 [방법2]를 사용하여 해결했다.

[방법2] flutter_dotenv 사용

https://www.geeksforgeeks.org/how-to-add-env-file-in-flutter/
위 글을 그대로 따라했다.

  1. 방법 1과 같이 최상위 폴더에 .env 파일을 추가한 후 다음과 같이 숨기고 싶은 api 키를 넣어준다.
appKey = "어쩌구저쩌구앱키"
  1. flutter_dotenv를 다운받는다.
$ flutter pub add flutter_dotenv
  1. pubspec.yaml의 asset부분에 다음과 같이 추가해준다.
assets:
  .env # path to your .env file
  1. main.dart에 다음을 추가해준다.
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await dotenv.load(fileName: ".env");	// 추가

  runApp(const MyApp());
}
  1. 다음과 같이 dotenv.env['appKey']방식으로 사용하면 된다.
void main() async {
  WidgetsFlutterBinding.ensureInitialized(); 
  await dotenv.load(fileName: ".env");	// .env 파일 Path
  KakaoSdk.init(nativeAppKey: dotenv.env['appKey']);
  
  runApp(const MyApp());
}

참고
https://florescene.tistory.com/189
https://www.geeksforgeeks.org/how-to-add-env-file-in-flutter/

profile
Software Developer

0개의 댓글