앱 개발 공부방

Flutter-validate, formkey 본문

FLUTTER

Flutter-validate, formkey

춘행이 2020. 11. 1. 14:34
728x90

위 화면처럼 TextFormField에 아무것도 안 쓰여있을 때 빨간색으로 에러를 보여주는 방법을 구현하겠습니다.

 

import 'package:flutter/material.dart';

class MyFormValidation extends StatefulWidget {
  @override
  _MyFormValidationState createState() => _MyFormValidationState();
}

class _MyFormValidationState extends State<MyFormValidation> {
  final _formKey=GlobalKey<FormState>();//자식 위젯들을 구별하기 위해 global key를 사용할 수 있습니다. global key는 모든 위젯 계층을 통틀어 유니크 해야 합니다. global key는 주어진 위젯과 연결된 상태를 찾는 데 사용될 수 있습니다.
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('vaildation'),
      ),
      body: Form(
        key: _formKey,//formkey를 통해 fromstate를 알수있다.
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            TextFormField(
              validator: (value){
                if(value.isEmpty){
                  return '공백은 허용되지 않습니다.';
                }
              },
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(onPressed: (){
                if(_formKey.currentState.validate()){
                  Scaffold.of(_formKey.currentContext).showSnackBar(SnackBar(content: Text('처리중'),));
                }
              },
                child: Text("완료"),
              ),
            )

          ],
        ),
      ),
    );
  }
}
_formKey=GlobalKey <FormState>();

global key는 자식 위젯들을 구별하기 위해 사용하고, 모든 위젯을 통틀어 유니크해야 합니다. 

또 주어진 위젯과 연결된 상태를 찾는 데 사용될 수 있습니다.

 

TextFormField

textfield와 거의 동일하지만 차이점은 폼 안에 넣어 사용하면서 추가적으로 입력값을 유효성 검증이나 다른 폼필드와의 연동 등의 기능을 제공한다.

 

validator

말 그대로 value값을 보고 유효성 검사를 하는 것

728x90

'FLUTTER' 카테고리의 다른 글

Flutter - Getx  (0) 2022.03.16
Flutter - StatefulWidget Life cycle  (0) 2022.03.16
Flutter-TabBar  (0) 2020.10.31
Flutter-Drawer  (0) 2020.10.25
Flutter-AnimatedOpacity  (0) 2020.10.23
Comments