guricode

[영화정보앱 만들기] 의존성 설정,dotenv 본문

앱/Flutter&Dart

[영화정보앱 만들기] 의존성 설정,dotenv

agentrakugaki 2025. 8. 26. 16:40

플러터 심화 과제를 위해 영화정보 앱을 만들기로 했다.

 

과제에 필요한 의존성 설정부터 진행한다


의존성 추가

dependencies:
  flutter:
    sdk: flutter
  flutter_riverpod: ^2.5.1      # 상태 관리. (ViewModel → UI 연결)
  dio: ^5.5.0+1                 # HTTP 요청. (TMDB API 통신)
  freezed_annotation: ^2.4.1    # 불변 클래스 선언용 어노테이션
  json_annotation: ^4.9.0       # JSON 직렬화 지원
  flutter_dotenv: ^5.1.0        # .env 파일 읽기 (API 토큰 관리)
  cached_network_image: ^3.3.1  # 이미지 캐싱 (포스터 성능 개선)
  intl: ^0.19.0                 # 날짜, 숫자 포맷 (개봉일 표시 등)
dev_dependencies:
  build_runner: ^2.4.11         # 코드 자동 생성기 (freezed, json_serializable 실행용)
  freezed: ^2.5.2               # 불변 클래스 생성
  json_serializable: ^6.8.0     # JSON 직렬화 생성
flutter:
  assets:
    - .env                      # 환경변수 파일 포함

필요한 라이브러리들을 추가 후 flutter pub get을 실행하여 pubspec.lock에 고정해준다.

 

그 다음 TMDB에 회원가입하여 API키를 받아야하는데...

403 에러가 뜨며 가입이 안되고있다...

 

로컬회선문제인지 서버문제인지는 모르겠지만...이 부분은 내일 다시 확인하도록 하자..


api키를 받았다면 해야할 것들

프로젝트 루트에 .env 파일 작성

TMDB_TOKEN=eyJhbGciOi...   # TMDB v4 Read Access Token

 

 

env.dart

  • .env에서 값 읽기 전용 클래스.
class Env {
  static String get tmdbToken {
    final v = dotenv.env['TMDB_TOKEN'];
    if (v == null || v.isEmpty) {
      throw StateError('TMDB_TOKEN is missing. Set it in .env');
    }
    return v;
  }
}

 

의존성 추가하고 flutter pub get을 했을때 riverpod 2.4.1 버전만 빼놓고 추가가되는 상황이 있었는데

pubspec에서 제거 후 flutter pub add flutter_riverpod을 실행하여 해결하였다.

왜 이것만 빼놓고 추가가됐는지..?

아무튼 api키를 관리하기위해 dotenv를 사용했다.

dotenv는 이런 민감정보들을 .env파일에 저장하고 실행시 해당값을 프로그램 내부에서 사용할수 있게 하는 역할을 한다.

 

dotenv.env는 Map 같은 역할을 한다.

.env → dotenv가 로드 → Map 형태 메모리에 저장 → 코드에서 dotenv.env['KEY']로 접근

 

 

main.dart에서 비동기로 아래 코드를 넣어 API가 파일을 잘 불러올수있는 상태인지 확인했다.

dotenv.load(fileName: ".env");