Как заставить пользователя ввести минимум 2 символа в TextField во Flutter? - PullRequest
0 голосов
/ 28 марта 2020

Я хочу создать TextField во флаттере, в котором пользователь должен ввести свое имя, но я хочу заставить его ввести минимум 2 символа.

Это мой код:

TextField(
                    autofocus: true,
                    textCapitalization: TextCapitalization.words,
                    textAlign: TextAlign.center,
                    decoration: InputDecoration(
                      labelStyle: TextStyle(color: Colors.blue[900]),
                      border: InputBorder.none,
                      hintText: 'VORNAME',
                    ),
                    style: TextStyle(
                        color: Colors.blue[900],
                        fontWeight: FontWeight.w600,
                        fontSize: MediaQuery.of(context).size.width * 0.075),
                    cursorColor: Colors.greenAccent,
                    inputFormatters: <TextInputFormatter>[
                      WhitelistingTextInputFormatter(RegExp("[a-zA-ZÄäÖöÜü]")) //Only Text as input
                    ],
                    onChanged: (value) {
                      userData.forename = value;
                    },
                    onSubmitted: (value) {
                      Navigator.of(context).push(
                          CupertinoPageRoute(builder: (context) => SurName()));
                    }),

Как мне этого добиться? Заранее спасибо!

Бен

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Просто установите maxLength в вашем конструкторе TextField. Он также доступен для TextFormField, который представляет собой TextField, обернутый в FormField, чтобы использовать его внутри формы.

0 голосов
/ 28 марта 2020

Для проверки текстового поля используйте TextFormField вместо TextField. TextFormField необходимо обернуть виджетом Form (если есть два или более текстовых полей, вы можете обернуть их родительский виджет виджетом формы). пользователь, когда они не подтвердили и как только они подтвердят сообщение перестает отображаться). Мы создаем две переменные и присваиваем их форме. Затем нам нужен валидатор , в котором мы проверяем в соответствии с нашими требованиями. (Если вам нужно добавить больше проверок, вы можете добавить несколько условий if.). Наконец, в поле отправив, мы проверяем, подтвердил ли пользователь форму, если проверено, мы выполняем желаемое действие, иначе мы устанавливаем для переменной autovalidate значение true для выполнения автоматической проверки.

  var formKey = GlobalKey<FormState>();
  bool autoValidate = false;


         Form(
              key: formKey,
              autovalidate: autoValidate,
              child: TextFormField(
                validator: (value){
                 return value.length < 2 ? 'Name must be greater than two characters' : null;
                },
                  autofocus: true,
                  textCapitalization: TextCapitalization.words,
                  textAlign: TextAlign.center,
                  decoration: InputDecoration(
                    labelStyle: TextStyle(color: Colors.blue[900]),
                    border: InputBorder.none,
                    hintText: 'VORNAME',
                  ),
                  style: TextStyle(
                      color: Colors.blue[900],
                      fontWeight: FontWeight.w600,
                      fontSize: MediaQuery.of(context).size.width * 0.075),
                  cursorColor: Colors.greenAccent,
                  inputFormatters: <TextInputFormatter>[
                    WhitelistingTextInputFormatter(RegExp("[a-zA-ZÄäÖöÜü]")) //Only Text as input
                  ],
                  onChanged: (value) {
                    userData.forename = value;
                  },
                  onFieldSubmitted: (value){
                    if(formKey.currentState.validate()){
                      Navigator.of(context).push(
                          CupertinoPageRoute(builder: (context) => SurName()));
                    }else{
                      setState(() {
                        autoValidate=true;
                      });
                    }

                  },
                  ),
            ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...