В чем разница между TextFormField и TextField?

Я новичок во Flutter (и Dart), и при попытке создать форму для редактирования объекта я искал в Интернете примеры и учебные пособия, и я увидел, что оба они использовались.

В чем разница между 2? Какой я должен использовать?

Благодарю.

Ответ 1

Если вы создаете Form которой вам требуется сохранить, сбросить или подтвердить operations-, используйте TextFormField. Иначе Для простого ввода пользовательского ввода достаточно TextField.

TextFormField, который интегрируется с виджетом Form.

Это удобный виджет, который оборачивает виджет TextField в FormField.

Form предка не требуется. Форма просто упрощает сохранение, сброс или проверку нескольких полей одновременно.

Чтобы использовать без формы, передайте GlobalKey в конструктор и используйте GlobalKey.currentState для сохранения или сброса поля формы.

образец:

TextFormField(
  decoration: const InputDecoration(
    icon: Icon(Icons.person),
    hintText: 'What do people call you?',
    labelText: 'Name *',
  ),
  onSaved: (String value) {
    // This optional block of code can be used to run
    // code when the user saves the form.
  },
  validator: (String value) {
    return value.contains('@') ? 'Do not use the @ char.' : null;
  },
)

TextField, которое является основным текстовым полем без интеграции Form.

Текстовое поле вызывает onChanged вызов onChanged всякий раз, когда пользователь изменяет текст в поле. Если пользователь указывает, что он завершил набор текста в поле (например, нажатием кнопки на программной клавиатуре), текстовое поле вызывает onSubmitted вызов onSubmitted.

Ответ 2

TextField - это простое текстовое поле. (вас не волнует пользовательский ввод) TextFormField - текстовое поле, которое будет использоваться в форме (вы заботитесь о пользовательском вводе).

Если вам не нужно проверять TextField. Если вам нужно проверить ввод пользователя, используйте TextFormField с validator.