You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter PWA移动端输入文本后键盘自动关闭,如何保持开启?

解决Flutter PWA移动端发送消息后键盘自动关闭的问题

问题根源是发送消息清空输入框时,输入框失去焦点导致键盘收起,通过主动管理输入框焦点即可让键盘保持开启状态,具体实现步骤如下:

1. 定义并绑定FocusNode

在页面的State类中定义FocusNode,并将其绑定到输入框(TextField/TextFormField)上:

final FocusNode _messageFocusNode = FocusNode();

// 你的输入框组件
TextField(
  controller: messageController,
  focusNode: _messageFocusNode,
  // 其他配置:键盘类型、提示文本等
)

2. 修改发送按钮的点击逻辑

在发送消息并清空输入框后,通过FocusNode主动请求输入框重新获取焦点。使用addPostFrameCallback确保清空操作完成后再执行焦点请求,避免时序问题:

GestureDetector(
  onTap: () async {
    if (!messageController.isEmptyPureText) {
      // 发送消息的socket逻辑保持不变

      messageController.clear();
      isTextEntered.value = false;

      // 发送完成后请求输入框焦点,维持键盘开启
      WidgetsBinding.instance.addPostFrameCallback((_) {
        _messageFocusNode.requestFocus();
      });
    }
  },
  child: Container(
    width: AppConstants.defaultMessengerBottomSheetHeight - 5,
    height: AppConstants.defaultMessengerBottomSheetHeight,
    alignment: Alignment.center,
    color: Colors.transparent,
    child: Transform.scale(
      scale: 1.3,
      child: SvgPicture.asset(Assets.images.svg.send),
    ),
  ),
)

补充适配方案

如果在部分移动端浏览器(PWA环境)仍存在问题,可尝试:

  • 替换messageController.clear()为messageController.text = ''后再请求焦点
  • 确保输入框的autofocus属性配置合理,保证初始和发送后都能正确获取焦点

内容的提问来源于stack exchange,提问作者yalda mohasseli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:04:54