Flutter - 플러터 완성형 한글 validation

Red Dev Love·2021년 4월 26일
1
post-thumbnail

플러터의 RegExp 를 활용하여 완성형 한글을 입력받도록 하는 함수를 공유하고자 한다.

final RegExp _regExp = RegExp(r'[\uac00-\ud7af]', unicode: true);

위와 같이 RegExp 타입 _regExp 를 선언한다. 이때, unicode: true 로 파라메터를 설정하여 완성되어 있는 한글들의 유니코드 범위를 설정해 준다.
예를 들어, ac00 은 '가' 를 표현하는 유니코드이다.

TextFormField(
	controller: _textEditingController,
	onChanged: (dynamic val) {},
	validator: (String value) {
		if (_regExp.allMatches(value).length != value.length) {
			return '완성형 한글로 입력해주세요.';
		} else {
			return null;
		}
	},
),

위와 같이 TextFormField 를 구현 하면 아래와 같이 활용할 수 있다.

완성된 예제 코드 :

class CompleteHangul extends StatefulWidget {
  
  _CompleteHangulState createState() => _CompleteHangulState();
}

class _CompleteHangulState extends State<CompleteHangul> {
  final RegExp _regExp = RegExp(r'[\uac00-\ud7af]', unicode: true);

  TextEditingController _textEditingController;

  
  void initState() {
    super.initState();

    _textEditingController = TextEditingController();
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Container(
        alignment: Alignment.center,
        padding: EdgeInsets.symmetric(horizontal: 16),
        child: TextFormField(
          controller: _textEditingController,
          autovalidateMode: AutovalidateMode.always,
          onChanged: (dynamic val) {},
          validator: (String value) {
            if (_regExp.allMatches(value).length != value.length) {
              return '완성형 한글로 입력해주세요.';
            } else {
              return null;
            }
          },
        ),
      ),
    );
  }
}

0개의 댓글