Класс GlobalKey
Класс GlobalKey параметризуют типом State,
например GlobalKey<FormState>.
По ключу вызывают currentState
и currentContext.
Ключ должен быть уникален в пределах приложения.
Синтаксис
GlobalKey<FormState>()
Параметры
| Параметр | Описание |
|---|---|
currentState |
State виджета с этим ключом. Тип задают в угловых скобках, например FormState. |
currentContext |
Контекст виджета с этим ключом. По нему можно прочитать размер и положение. |
Пример
Давайте прочитаем текст через GlobalKey у Form:
import 'package:flutter/material.dart';
final formKey = GlobalKey<FormState>();
class LabelForm extends StatefulWidget
{
const LabelForm({super.key});
@override
State<LabelForm> createState() => _LabelFormState();
}
class _LabelFormState extends State<LabelForm>
{
@override
Widget build(BuildContext context)
{
return Form(
key: formKey,
child: Text('abcde'),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: LabelForm(),
),
),
),
);
}
На экране Form с ключом formKey покажет строку 'abcde',
а currentState формы доступен через GlobalKey.
Пример
Давайте вызовем validate через GlobalKey:
import 'package:flutter/material.dart';
final fieldKey = GlobalKey<FormFieldState<String>>();
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: TextFormField(
key: fieldKey,
initialValue: '12345',
),
),
),
),
);
}
На экране поле с текстом '12345'
связано с GlobalKey fieldKey для validate и save.
Смотрите также
-
класс
Key,
базовый типGlobalKey -
виджет
Form,
которому часто задаютGlobalKey -
виджет
TextFormField,
состояние которого читают по ключу -
класс
ValueKey,
когда доступ кStateснаружи не нужен