Flutter——用户关闭键盘后强制拉起键盘

Bug背景

今天在弄输入框的时候,发现用户手动关闭键盘后,因为自定义组件的特殊性,我在点击输入框后并没有唤起键盘。

一般点击输入框或者某个组件:

GestureDetector(
  onTap: () {
    FocusScope.of(context).requestFocus(_focusNode);
  },
  child: YourWidget(),
),

 我们直接聚焦,就可以弹起键盘。

将带有焦点的控件与TextFieldTextFormField小部件关联起来,并使用focusNode属性将其与之前创建的FocusNode实例关联:

TextField(
  focusNode: _focusNode,
  // 其他属性
),

但是在我这边的需求里,当用户手动关闭键盘时,他还在聚焦,我这时候,点击输入框,但是它并不会弹起来,于是

首先:

1.使用KeyboardVisibilityBuilder来监听键盘的可见性状态。在builder回调中,根据isKeyboardVisible的值来判断键盘是否关闭。

首先,在pubspec.yaml文件中添加keyboard_visibility插件的依赖:

dependencies:
  keyboard_visibility: ^0.7.0
import 'package:keyboard_visibility/keyboard_visibility.dart';

KeyboardVisibilityBuilder(
  builder: (context, isKeyboardVisible) {
    if (isKeyboardVisible) {
      // 键盘是打开的
      print('键盘是打开的');
    } else {
      // 键盘是关闭的
      print('键盘是关闭的');
    }
    return YourWidget();
  },
),

在我的组件的onTap事件里:

if (_focusNode.hasFocus&&!isKeyboardVisible) {
              _focusNode.unfocus();
              await Future.delayed(Duration(milliseconds: 200));
              FocusScope.of(context).requestFocus(_focusNode);
            }

单独处理,输入框在聚焦情况下,用户手动关闭键盘,下次点击输入框仍无法弹起,先让组件失焦然后聚焦就可以弹起键盘了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&岁月不待人&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值