← 전체 글로 돌아가기

Flutter

Flutter 실기기에서 입력이 반응하지 않을 때

테스트 기기에서 사용자 입력이 먹히지 않을 때 원인을 추적하고 빠르게 고치는 방법.

모바일 개발을 하다 보면 실기기에서만 발생하는 이상한 버그를 마주친다. 특히 입력(터치, 키보드)이 반응하지 않는 경우는 재현이 어렵고 답답하다.

첫 번째 확인: 환경 설정

flutter doctor -v

이 명령어부터 시작해라. 특히 확인할 것:

  • Android/iOS SDK 버전 호환성
  • 기기의 OS 버전과 앱 타겟 버전이 맞는가?
  • 디버그 모드인가 릴리즈 모드인가?

환경 불일치가 가장 흔한 원인이다.

권한 확인

Android와 iOS는 입력 처리에 필요한 권한이 다르다.

Android에서는:

  • INTERACT_ACROSS_APPS (크로스앱 상호작용)
  • Input Method 접근 권한

iOS에서는:

  • UITextInteractionEnabled 설정
  • Accessibility 권한

AndroidManifest.xmlInfo.plist를 한 번 더 확인해라.

실제로 재현되는지 확인

flutter run --verbose

Verbose 모드로 실행하면 터치 이벤트가 로그에 남는다. 실제로 입력이 감지되는지 확인할 수 있다.

  • 입력이 감지되지만 화면에 반영 안 됨 → 상태 관리 문제
  • 입력 자체가 감지 안 됨 → 위젯 설정 문제
  • 특정 상황에서만 안 됨 → 타이밍 이슈

빌드 모드 확인

Debug와Release 모드에서 다르게 동작하는 경우가 있다.

flutter run -d <device_id> # Debug
flutter run --release -d <device_id> # Release

한 가지만 바꿔서 테스트해서 어느 모드에서 문제가 생기는지 파악해라. Release 모드에서만 안 되면 컴파일 최적화 설정을 의심해야 한다.

위젯 트리 확인

Input을 처리하는 위젯(TextField, GestureDetector 등)이 화면에 제대로 렌더링되고 있는지 확인한다.

  • IgnorePointerAbsorbPointer 설정이 실수로 true인가?
  • Opacity(0)이나 visibility: false 같은 숨겨진 설정이 있는가?
  • 부모 위젯이 제스처를 먹고 있지는 않은가?

코드를 읽으면서 이런 것들을 체크해라.

체계적인 문제 해결

  1. 환경 설정부터 확인 (flutter doctor)
  2. 로그에서 입력이 실제로 감지되는지 확인
  3. 한 가지 변수씩만 바꿔본다
  4. 각 단계마다 결과를 기록한다

Flutter 입력 버그는 대부분 이 체크리스트만 따라가도 해결된다. 재현 방법과 현상을 정확히 기록해두는 게 핵심이다.