[flutter] 플러터에서 키보드 이벤트 처리는 어떻게 할 수 있나요?
플러터(Flutter)에서는 TextFormField나 TextField와 같은 위젯을 사용하여 사용자 입력을 받을 수 있습니다. 이 때 키보드 이벤트를 처리해야 하는 경우가 있는데, 이를 위해 플러터에서는 여러 방법을 제공합니다.
1. TextEditingController 사용
TextEditingController를 사용하여 TextField나 TextFormField 위젯과 상호 작용할 수 있습니다. TextEditingController를 통해 입력된 텍스트 내용을 확인하거나 변경할 수 있습니다. 또한, 키보드 이벤트를 처리할 수 있도록 TextEditingController에는 이벤트 핸들러를 등록할 수 있습니다.
아래는 TextEditingController를 사용하여 Enter 키를 누르면 특정 동작을 수행하는 예시 코드입니다.
TextEditingController _controller = TextEditingController();
@override
void initState() {
super.initState();
_controller.addListener(_handleKeyEvent);
}
void _handleKeyEvent() {
// 키보드 이벤트 처리 로직 구현
}
2. FocusNode와 RawKeyboardListener 사용
FocusNode와 RawKeyboardListener를 사용하여 특정 위젯이 포커스를 받을 때 키보드 이벤트를 감지하고 처리할 수 있습니다. RawKeyboardListener를 통해 키보드 입력 이벤트에 대한 리스너를 등록하여 필요한 로직을 수행할 수 있습니다.
FocusNode _focusNode = FocusNode();
@override
void initState() {
super.initState();
_focusNode.addListener(_handleFocusChange);
}
void _handleFocusChange() {
if (_focusNode.hasFocus) {
// 키보드 이벤트 처리 로직 구현
}
}
Widget build(BuildContext context) {
return RawKeyboardListener(
focusNode: _focusNode,
onKey: (RawKeyEvent event) {
if (event is RawKeyDownEvent) {
// 키보드 이벤트 처리 로직 구현
}
},
child: TextField(),
);
}
플러터에서 키보드 이벤트 처리를 위한 방법은 다양하며, 위 예시들은 이를 구현하는 간단한 방법을 보여줍니다. 앱의 구체적인 요구에 맞게 적절한 방법을 선택하여 사용할 수 있습니다.