TextField(
controller: controller.nicknameController,
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.allow(RegExp(r'[ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ]')),
],
),
RegExp의 내용을 보면 허용된 문자는 아래와 같다.
아래아를 추가해주었음에도
iOS 10키 키패드에서 입력 시 한글이 정상적으로 입력되지 않는 문제가 있어서
ㅏ-ㅣ 까지 추가하니 문제가 완전히 해결됨
추가로 영어나 숫자를 더 허용하고 싶으면 아래와 같이 추가해주면 됨
FilteringTextInputFormatter.allow(RegExp(r'[a-z|A-Z|0-9|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ]'))
끝
이 아니라
위와 같이 하면
자음+아래아가 안쪽에 있는 모음(ㅓㅕㅗㅛㅔㅖ 등)을 쓸 때 문제가 있다.
최초 문자에서는 문제가 없지만 이어지는 문자에서 쓰고자 하면 자음이 사라지는 문제가 발생한다.
설명을 하기가 어려워 아래 이미지를 첨부한다.
그래서 아래와 같이 일일히 자음+아래아를 추가하니 문제가 해결되었다.
FilteringTextInputFormatter.allow(RegExp(r'[a-z|A-Z|0-9|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ|ᄀᆞ|ᄂᆞ|ᄃᆞ|ᄅᆞ|ᄆᆞ|ᄇᆞ|ᄉᆞ|ᄋᆞ|ᄌᆞ|ᄎᆞ|ᄏᆞ|ᄐᆞ|ᄑᆞ|ᄒᆞ]'))
.
.
진짜 끝
이 아니라
iOS 10키에서는 위에까지 하면 정상적으로 입력이 되었는데,
안드로이드 천지인에서는 여전히 입력이 안되었다.
어처구니가 없게도 두 키패드가 쓰는 아래아의 문자가 다르다.
iOS 아래아
ᆞ|ᆢ
안드로이드 아래아
ㆍ|ᆢ
둘 다 추가해주어 문제를 해결하였다.
FilteringTextInputFormatter.allow(RegExp(r'[a-z|A-Z|0-9|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|ᆞ|ᆢ|ㆍ|ᆢ|ᄀᆞ|ᄂᆞ|ᄃᆞ|ᄅᆞ|ᄆᆞ|ᄇᆞ|ᄉᆞ|ᄋᆞ|ᄌᆞ|ᄎᆞ|ᄏᆞ|ᄐᆞ|ᄑᆞ|ᄒᆞ]'))
.
.
.
진짜
진짜
끝
자바스크립트로 작업하며 같은 오류로 인해 어려움을 겪다가
작성해준 내용을 토대로 해결했습니다. 감사합니다 🙏😆