Используйте form_validator, чтобы проверить, что адрес электронной почты тот же

Я использую плагин form_validator Flutter для создания блока формы. Моя форма содержит множество полей, включая Email и Email confirmation:

TextFormField(
  validator: ValidationBuilder()
      .email()
      .maxLength(50)
      .required()
      .build(),
  decoration: const InputDecoration(labelText: 'email'),
),
const SizedBox(height: 30),

TextFormField(
  validator: ValidationBuilder()
      .email()
      .maxLength(50)
      .required()
      .build(),
  decoration:
      const InputDecoration(labelText: 'email confirmation'),
),

Они равны, меняется только метка. Как я могу добавить проверку во второе поле (EMAIL CONFIRMATION), которое контролирует, что это то же значение, что и первое?

Пример:

EMAIL: [email protected]
EMAIL CONFIRMATION: [email protected]
--> ok

EMAIL: [email protected]
EMAIL CONFIRMATION: [email protected]
--> error

Пакет, который вы используете, может не поддерживать это из коробки. Поэтому вы можете просто использовать свойство onChangedTextFormField, чтобы сравнить значения и при необходимости настроить пользовательский интерфейс. Вы смотрели на API пакета, чтобы увидеть, встроен ли он?

daddygames 22.03.2022 14:37

@daddygames спасибо за ответ. Я нашел или функция, который может помочь, но я не уверен и не знаю, как его использовать

whitecircle 22.03.2022 14:39

При беглом взгляде на ValidationBuilder.or кажется, что он выполняет ту или иную проверку. Он не делает никакого сравнения со значениями. Я не уверен, что это решит вашу проблему.

daddygames 22.03.2022 14:42

@daddygames ммм хорошо. что вы предлагаете делать? как я могу быстро использовать свойство onChanged и изменить пользовательский интерфейс?

whitecircle 22.03.2022 14:44

Я рекомендую использовать опцию CustomValidationBuilder используемого вами пакета. Это даст вам необходимую гибкость, не прибегая к onChanged или чему-то подобному. Вы захотите добавить TextEditingControllers к своим TextFormFields, чтобы вы могли сравнить 2 значения внутри вашего пользовательского валидатора. Если я найду время, чтобы написать пример, я отправлю его в качестве ответа.

daddygames 22.03.2022 14:51

@daddygames, спасибо! Это будет очень полезно

whitecircle 22.03.2022 15:07

почему ты не создаешь свою собственную форму?

Nbn 22.03.2022 15:20

@Nbn У меня мало времени, и я хотел бы использовать что-то более надежное.

whitecircle 22.03.2022 15:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто использовать 2 текстовых контроллера, например,

emailTextController

confirmEmailTextController

Убедитесь, что вы добавили следующий метод проверки в Confirm Email TextFormField

validator: (value) {
    if (value != emailTextController.text) {
        return 'Email is not matching';
    }
},

И вы получаете соответствующий errorText, чей fontStyle можно настроить.

Другие вопросы по теме