В TextFormField
вы можете запросить фокусировку, используя FocusScope.of(context).requestFocus(_focusNode)
. Тем не менее, как вы можете убедиться, что один и тот же узел фокусировки был не сфокусирован?
Например, в моем рабочем процессе я хочу, чтобы hintText
изначально было X, Y когда фокусировано, и go обратно в Х, когда не сфокусировано. Но, если я использую что-то обычное, например то, что показано ниже, я не могу go вернуться к X.
class TextFormFieldErrorOnLabel extends StatefulWidget {
final String hintText;
final String hintTextOnFocus;
const NewTextFormField({
this.hintText,
this.hintTextOnFocus,
}) : super(key: key);
@override
_NewTextFormFieldState createState() => _NewTextFormFieldState();
}
class _NewTextFormFieldState {
final FocusNode _focusNode = FocusNode();
void _requestFocus() {
setState(() {
FocusScope.of(context).requestFocus(_focusNode);
});
}
@override
Widget build(BuildContext context) {
return TextFormField(
onTap: _requestFocus,
focusNode: _focusNode,
decoration: InputDecoration(
hintText: _focusNode.hasFocus ? widget.hintTextOnFocus : widget.hintText,
)
);
}
}
Есть ли где-нибудь метод "requestUnfocus
"? Если так, то как бы я назвал это из TextFormField
?