본문 바로가기

개발/Flutter

플러터(Flutter)에서 한글 입력시 마지막 글자 중복 입력 이벤트 발생

이런식으로 안녕하세요 입력 후 '요'만 추가적으로 입력되는 이벤트가 발생했다.

원인은

한글은 마지막까지 어떤 글자로 완성될지 모르는 특성 때문에 IME를 사용하는데

다음과 같이 '요' 글자 밑에 밑줄이 있는 상태를 composing 상태라고하며 다음 입력받을 글자를 대기중인 상태이다.

이때 엔터키 등으로 입력을 하게되면 TextEditingController 가 두번 실행게된다.

해결법은

if (textController.value.composing.isValid) {
    print('composing');
    return;
 }

다음과 같이 TextEditingController의 value에서 composing값을 isvalid로 검사하여 true일경우

그러니까 밑줄이 있을 경우 return;으로 처리했다.

완벽한 해결법은 아니지만 중복 입력되는 것 보다는 낫다는 판단으로 이렇게 처리했다.

 

 

 

 

 

 

 

 

 

반응형