flutter - 如何检查TextFormField是否获得焦点

标签 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 监听器,但我不想仅仅为了测试目的而这样做。它应该是非常简单的 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/

相关文章:

Dart lambda/shortland 函数混淆

flutter - 如何指定动态的持续时间?

flutter - Flutter:如何在容器内对齐小部件

rest - Http.post 在flutter/dart 中不接受内容类型application/query+json

dart - flutter 中的透明底部导航栏

android - 如何在Flutter中获取复杂的Json对象?

firebase - 在Firebase中手动设置集合的文档值是否正确或安全?

json - Dart/flutter : build_value vs json_serializable

flutter - 生成器无法定位尚未迁移到空安全的库

dart - 传递状态的更好方法,而不是在 flutter 中创建两条相同的线