Flutter
Flutter 실기기에서 입력이 반응하지 않을 때
테스트 기기에서 사용자 입력이 먹히지 않을 때 원인을 추적하고 빠르게 고치는 방법.
모바일 개발을 하다 보면 실기기에서만 발생하는 이상한 버그를 마주친다. 특히 입력(터치, 키보드)이 반응하지 않는 경우는 재현이 어렵고 답답하다.
첫 번째 확인: 환경 설정
flutter doctor -v
이 명령어부터 시작해라. 특히 확인할 것:
- Android/iOS SDK 버전 호환성
- 기기의 OS 버전과 앱 타겟 버전이 맞는가?
- 디버그 모드인가 릴리즈 모드인가?
환경 불일치가 가장 흔한 원인이다.
권한 확인
Android와 iOS는 입력 처리에 필요한 권한이 다르다.
Android에서는:
INTERACT_ACROSS_APPS(크로스앱 상호작용)- Input Method 접근 권한
iOS에서는:
UITextInteractionEnabled설정- Accessibility 권한
AndroidManifest.xml과 Info.plist를 한 번 더 확인해라.
실제로 재현되는지 확인
flutter run --verbose
Verbose 모드로 실행하면 터치 이벤트가 로그에 남는다. 실제로 입력이 감지되는지 확인할 수 있다.
- 입력이 감지되지만 화면에 반영 안 됨 → 상태 관리 문제
- 입력 자체가 감지 안 됨 → 위젯 설정 문제
- 특정 상황에서만 안 됨 → 타이밍 이슈
빌드 모드 확인
Debug와Release 모드에서 다르게 동작하는 경우가 있다.
flutter run -d <device_id> # Debug
flutter run --release -d <device_id> # Release
한 가지만 바꿔서 테스트해서 어느 모드에서 문제가 생기는지 파악해라. Release 모드에서만 안 되면 컴파일 최적화 설정을 의심해야 한다.
위젯 트리 확인
Input을 처리하는 위젯(TextField, GestureDetector 등)이 화면에 제대로 렌더링되고 있는지 확인한다.
IgnorePointer나AbsorbPointer설정이 실수로 true인가?Opacity(0)이나visibility: false같은 숨겨진 설정이 있는가?- 부모 위젯이 제스처를 먹고 있지는 않은가?
코드를 읽으면서 이런 것들을 체크해라.
체계적인 문제 해결
- 환경 설정부터 확인 (flutter doctor)
- 로그에서 입력이 실제로 감지되는지 확인
- 한 가지 변수씩만 바꿔본다
- 각 단계마다 결과를 기록한다
Flutter 입력 버그는 대부분 이 체크리스트만 따라가도 해결된다. 재현 방법과 현상을 정확히 기록해두는 게 핵심이다.