如何检查TextFormField是否聚焦

时间:2019-06-23 08:38:47

标签: flutter dart

我有一个带有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侦听器,但我不想这样做只是出于测试目的。它应该确实是像TextField那样的field.focusNode。

1 个答案:

答案 0 :(得分:1)

您应该添加侦听器,可以在其中检查textFormField的状态。 方法hasFocus返回true或false。

@override
  void initState() {
    super.initState();
    _loginFocus.addListener(_onFocusChange);
  }

  void _onFocusChange(){
    debugPrint("Focus: "+_focus.hasFocus.toString());
  }