【发布时间】:2020-04-15 19:25:00
【问题描述】:
在TextFormField 中,您可以使用FocusScope.of(context).requestFocus(_focusNode) 请求焦点。但是,如何确保同一个焦点节点未获得焦点?
例如,在我的工作流程中,我希望 hintText 最初为 X,聚焦时为 Y,未聚焦时返回 X。但是,如果我使用像下面这样的常用方法,我将无法返回 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 调用它?
【问题讨论】:
-
FocusNode类有一个unfocus方法。现在挑战在哪里调用它。