小编Lio*_*oft的帖子

如何在 flutter 中完全取消 TextField 焦点而不稍后焦点返回

在我的 flutter 应用程序中,我有一个文本字段,我希望能够通过点击不可交互的组件来移除焦点。这不是颤振中文本字段的默认行为,因此我需要找到一种手动执行此操作的方法。我按照https://flutterigniter.com/dismiss-keyboard-form-lose-focus/和其他各个页面上的步骤进行了一些操作,其中涉及根部的 GestureDetector 和 onTap,看起来像这样:

onTap: () {
  FocusScopeNode cf = FocusScope.of(context);
  if (!cf.hasPrimaryFocus && cf.focusedChild != null) {
    cf.focusedChild.unfocus();
    cf.unfocus();
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我选择文本字段时,单击其他位置(此时焦点似乎消失),打开时间选择器,然后关闭该时间选择器,文本字段再次聚焦。如果我通过单击键盘上的“完成”按钮来取消文本字段的焦点,那么打开/关闭时间选择器将不会重新聚焦文本字段,所以我知道这一定是我取消焦点的方式有问题。散焦的正确方法是什么,这样焦点就不会像那样回来了?

android focus textfield flutter

9
推荐指数
2
解决办法
1万
查看次数

类型具有静态生命周期意味着什么?

我理解借用、特征或结构拥有生命周期意味着什么,但对我来说,为什么类型会有生命周期是没有意义的。我对类型的理解是,它们是在编译时使用的抽象,并且它们根本不需要存在于二进制文件中。例如,具有两个 int 的结构、两个 int 的元组以及两个 int 的固定大小数组在编译时应全部映射到内存中相同的值排列,并且代码将使用字节偏移量来查找这两个价值观。如果我的观点是正确的,那么生命周期的概念根本不应该应用于类型,因此以下两个结构是等效的:

pub struct Foo<T> {
    foo: T
}

pub struct Bar<T: 'static> {
    bar: T
}
Run Code Online (Sandbox Code Playgroud)

除了等效之外,语法根本不存在。我一定是误解了什么,广泛的谷歌搜索也没有帮助。类型生命周期的目的是什么?什么时候应该使用它们?

lifetime rust

6
推荐指数
1
解决办法
612
查看次数

标签 统计

android ×1

flutter ×1

focus ×1

lifetime ×1

rust ×1

textfield ×1