flutter - 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;
});
});
}
),
],
这是我的代码。
解决方案
推荐阅读
- sql - 雄辩的群发消息
- reactjs - gatsby-plugin-dark-mode 导致类型错误。打字稿盖茨比
- r - geom_dotplot 颜色的随机模式
- java - 无法从 LavaPlayer 的 Javax 实现中解析 NotificationListener
- php - 如何在 CSS 中查找和删除正文选择器
- r - 使用作闪亮仪表板标题的图像完全适合标题框
- javascript - 当cookie即将过期时发出警报jquery
- android - 无法启动接收器:不允许启动服务意图;应用程序在后台
- android - 如何设置暴露的下拉弹出窗口的背景颜色?
- php - php exec() 权限 - soffice 命令在终端中有效,但在 php exec() 中无效