我有一个带有 focusNode 的 TextFormField:
TextFormField(
key: Key('login-username-field-key'),
controller: loginTextController,
textInputAction: TextInputAction.next,
keyboardType: TextInputType.text,
onFieldSubmitted: (term){
_changeFocusField(context, _loginFocus, _passwordFocus);
},
focusNode: _loginFocus,
decoration: InputDecoration(
labelText: AppLocalizations.of(context).loginFieldUsername
),
),
然后:
// Check that text field initially is not focused
final TextFormField textField = tester.widget(find.byKey(Key('login-username-field-key')));
expect(textField.focusNode.hasFocus, isFalse);
但是从文档中我看到 TextFormField没有“focusNode”属性(如 TextField.focusNode .hasFocus)。
那么如何检查该行为?
PS 我的意思是我们可以使用 FocusNode 监听器,但我不想仅仅为了测试目的而这样做。它应该是非常简单的 field.focusNode 就像 TextField 一样。
最佳答案
您应该添加监听器,您可以在其中检查 textFormField 的状态。
hasFocus
方法返回 true 或 false。
@override
void initState() {
super.initState();
_loginFocus.addListener(_onFocusChange);
}
void _onFocusChange(){
debugPrint("Focus: "+_focus.hasFocus.toString());
}
关于flutter - 如何检查TextFormField是否获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722307/