반응형

🛠️ Flutter에서 디버그 모드일 때만 기능 실행하기

 

개발 중에만 실행하고 싶은 코드가 있을 때,

릴리즈 빌드에서는 제외되길 원하는 기능이 있을 때,

“디버그 모드에서만 실행되는 코드”**는 정말 유용한 패턴입니다.

 

Flutter는 이런 상황을 위해 간단한 방법을 제공합니다.

바로 kDebugMode를 사용하는 거예요.

 


 

 kDebugMode란?

 

Flutter에서 kDebugMode현재 앱이 디버그 빌드 상태인지 확인하는 전역 상수입니다.

import 'package:flutter/foundation.dart';

if (kDebugMode) {
  print('디버그 모드입니다!');
}

 

  • 디버그 빌드일 때만 true
  • 릴리즈 빌드나 프로파일 모드에서는 false
  • 코드 트리밍으로 인해 릴리즈 빌드에서는 이 조건문 자체가 제거됩니다

 


 

🎯 언제 사용할 수 있을까?

상황예시

개발자 전용 기능 실행 개발 중에만 보이는 버튼/토스트
로그 출력 디버그 중에만 print() 사용
테스트 데이터 주입 가짜 계정으로 자동 로그인
저장소 초기화 SharedPreferences 강제 리셋 등

 

 


 

🧪 실전 예시

 

 

📌 1. 디버그일 때만 실행 횟수 초기화

Future<void> resetLaunchCountIfDebug() async {
  final prefs = await SharedPreferences.getInstance();

  if (kDebugMode) {
    await prefs.setInt('launchCount', 0); // 디버깅 중엔 무조건 0부터 시작
  }

  int count = prefs.getInt('launchCount') ?? 0;
  await prefs.setInt('launchCount', count + 1);

  print('앱 실행 횟수: ${count + 1}');
}

 

 


 

📌 2. 디버그 모드에서만 개발자용 버튼 표시

if (kDebugMode)
  TextButton(
    onPressed: () => print('디버그용 기능 실행'),
    child: Text('개발자 전용 버튼'),
  ),

 

 


 

❗주의할 점

 

  • kDebugModepackage:flutter/foundation.dart에서 제공됩니다.
  • 릴리즈 빌드에서는 조건문 자체가 포함되지 않기 때문에 성능에도 영향 없음
  • kReleaseMode, kProfileMode도 함께 활용 가능해요.

 


 

✨ 마무리

 

Flutter 앱을 개발할 때, 디버깅 전용 기능을 안전하게 분리하고 싶다면

kDebugMode를 적극 활용해보세요!

 

  • 기능 테스트가 깔끔해지고
  • 실수로 릴리즈 빌드에 들어가는 걸 방지할 수 있어요.

 


🧡 이 글이 도움이 됐다면 공감 & 댓글 부탁드립니다 :)

Flutter 실전 팁, 상태관리, 배포 전략 등 계속 업데이트할게요!

반응형

+ Recent posts