Виджет FormField
Виджет FormField задаёт builder, validator и onSaved. Его используют TextFormField и другие поля внутри Form.
Синтаксис
FormField<String>(
builder: (state) => Text(state.value ?? ''),
validator: (v) => null,
)
Параметры
| Параметр | Описание |
|---|---|
builder |
Строит виджет и получает FormFieldState.
|
validator |
Проверяет значение перед submit. |
onSaved |
Сохраняет значение при вызове save. |
initialValue |
Начальное значение поля. |
autovalidateMode |
Режим автопроверки. Тип AutovalidateMode.
|
Пример
Давайте покажем простое поле через builder:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: FormField<String>(
initialValue: 'abcde',
builder: (state) => Text(state.value ?? ''),
),
),
),
),
);
}
На экране по центру появится строка 'abcde' из состояния поля.
Пример
Давайте сменим значение через didChange:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: FormField<String>(
initialValue: '12345',
builder: (state) {
return TextButton(
onPressed: () => state.didChange('abcde'),
child: Text(state.value ?? ''),
);
},
),
),
),
),
);
}
На экране кнопка показывает '12345', после нажатия текст станет 'abcde'.
Смотрите также
-
виджет
TextFormField,
который проверяет поле внутри формы -
виджет
Form,
который объединяет поля формы -
перечисление
AutovalidateMode,
который решает, когда проверять форму -
класс
FormState,
который управляет проверкой и сохранением