首页 > 解决方案 > Flutter 焦点为真时光标和键盘不显示

问题描述

我正在使用Linkable来突出显示用户在文本字段中键入的 Web 链接、电话号码和电子邮件地址。第一个问题是可链接不接受文本字段,它只接受一个文本。因此,我的解决方案是仅在用户输入时显示 TextField,并在用户不输入时将 TextField 替换为用户输入的文本。第二个问题是,只要文本字段可见,起初它不会显示键盘或光标,即使我可以验证它的焦点是否为真。每次弹出文本字段时如何显示光标?我什至将 showcursor 设置为 true ,但它仍然不起作用。在另一篇文章中,我读到使用带有延迟的计时器可以解决问题,所以我这样做了,但它仍然不起作用。

FocusNode _focusNode = FocusNode();
@override
  Widget build(BuildContext context) {
...
return GestureDetector(
onTap: () {
            FocusNode currentFocus = FocusScope.of(context);
           if (currentFocus.hasFocus) {
              currentFocus.unfocus();
           }
          },
child: Column(
          children: <Widget>[
              Visibility(
                visible: _focusNode.hasFocus,
                child: TextField(
                focusNode: _focusNode,
                showCursor: true,
                controller: _contentTextController,
              ),
           
            InkWell(
              child: Linkable(
                text: "testing",
                
              onTap: () async {
                FocusScope.of(context).requestFocus(_focusNode);

                //   FocusScope.of(context).requestFocus(_focusNode);
                //   Timer(const Duration(milliseconds: 1000), () {
                //     FocusScope.of(context).requestFocus(_focusNode);
                //     _focusNode.requestFocus();
                //   });
                  await Future.delayed(
                    Duration(milliseconds: 10)
                  );
                  Timer(const Duration(milliseconds: 10), () {
                    setState(() {
                    print(_focusNode.hasPrimaryFocus);
                    //showTextEditor = !showTextEditor;
                  });
                });
              }
            ),
          
          ],

这是我的代码。

标签: flutterdarttextfieldvisibility

解决方案


推荐阅读