HarmonyOS鸿蒙Next中Flutter TextField autofocus keyboardType失效

HarmonyOS鸿蒙Next中Flutter TextField autofocus keyboardType失效

示例代码

TextField(
    autofocus: true,
    keyboardType:
        const TextInputType.numberWithOptions(decimal: true),
)

现象

进入页面由于autofoucs为true自动打开键盘,但是设置的数字键盘无效。关闭键盘手动点击输入框再弹出键盘,此时弹出的才是设置的数字键盘。

环境

  • Flutter version 3.7.12-ohos-1.1.1
  • Dart version 2.19.6

更多关于HarmonyOS鸿蒙Next中Flutter TextField autofocus keyboardType失效的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

autofocus属性在页面加载时立即触发焦点获取,但此时键盘类型参数可能还没有完全初始化,导致默认键盘优先弹出。鸿蒙的Flutter版本中,keyboardType参数在自动聚焦时可能未被正确应用至原生组件,需通过手动控制焦点实现。

楼主通过FocusNode手动管理焦点,并在页面加载后延迟触发焦点请求试试:

FocusNode _focusNode = FocusNode();

@override
void initState() {
  super.initState();
  // 延迟触发焦点
  Future.delayed(Duration.zero, () {
    FocusScope.of(context).requestFocus(_focusNode);
  });
}

@override
Widget build(BuildContext context) {
  return TextField(
    focusNode: _focusNode,
    keyboardType: const TextInputType.numberWithOptions(decimal: true),
  );
}

更多关于HarmonyOS鸿蒙Next中Flutter TextField autofocus keyboardType失效的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS鸿蒙Next中,Flutter的TextField的autofocus和keyboardType属性可能失效是由于鸿蒙与Flutter的适配问题。当前鸿蒙对Flutter的部分控件支持不完善,特别是输入框相关的属性。可尝试使用HarmonyOS原生组件替代,或等待后续Flutter对鸿蒙的适配更新。检查Flutter版本是否支持当前鸿蒙SDK,确保使用最新稳定版Flutter。若问题持续,需关注Flutter官方对鸿蒙的兼容性更新。

这是一个已知的Flutter for HarmonyOS适配问题。在HarmonyOS Next上,当TextField同时设置autofocus和keyboardType时,初始弹出的键盘类型可能不会正确应用指定的类型。

目前可行的临时解决方案是:

  1. 移除autofocus属性,改为手动触发焦点
  2. 或者延迟设置keyboardType,在页面初始化完成后通过setState更新

这个问题主要是由于Flutter引擎与HarmonyOS输入法系统的初始交互时序问题导致的,建议关注后续Flutter for HarmonyOS的版本更新,华为团队正在优化这方面的兼容性。

回到顶部