Flutter 键盘未同时出现在模拟器和真实设备上>

Flutter keyboard not showing up on both emulator and real devices>

我的意思是键盘确实显示了几毫秒然后立即消失了,这是在模态底部Sheet,但我不认为这是问题Sheet.

Container(
  height: 50,
  width: double.infinity,
  padding: const EdgeInsets.only(left: 20),
  decoration: BoxDecoration(
    color: kAccent,
    border: Border(
      top: BorderSide(color: kBackground, width: 0.5),
    ),
  ),
  child: Container(
        alignment: Alignment.center,
        padding: const EdgeInsets.only(left: 10),
        width: hasText ? 300 : 350,
        height: 40,
        alignment: Alignment.center,
        decoration: BoxDecoration(
          color: kPrimary,
          borderRadius: BorderRadius.circular(15),
        ),
        child: TextField(
          focusNode: _komNode,
          controller: _kommentCtrl,
          decoration: InputDecoration.collapsed(
            hintText: 'Leave seme nice K-omments~',
            hintStyle: kOnPrimaryMediumText,
          ),
          maxLength: 100,
        ),
      ),
);

我看到有人说这是编译版本28的bug,降级到27就可以解决,但是我的项目已经是Sound Null Safety了,如果降级,我必须重写整个应用程序,因此,我无法将其降级为 27。

谁能帮我解决这个问题? @_@

尝试向 TextField

添加密钥
child: TextField(
          key: ValueKey("Your unique value"),  
          focusNode: _komNode,
          controller: _kommentCtrl,
          decoration: InputDecoration.collapsed(
            hintText: 'Leave seme nice K-omments~',
            hintStyle: kOnPrimaryMediumText,
          ),
          maxLength: 100,
        ),

更新

我认为问题是当您打开模式 sheet 时文本字段失去焦点,因此键盘关闭,因此请先尝试在构建方法之外声明您的小部件。像这样:

final _myModalSheet =  Container(
  //...
  child: Container(
        //...
        child: TextField(
          focusNode: _komNode,
          controller: _kommentCtrl,
          //...
          ),
        ),
      ),
);

然后在您的构建方法中添加 _myModalSheet。