Skip to main content

已弃用的 TextField.canRequestFocus

摘要

#

TextField.canRequestFocus 已弃用。可以通过设置 TextFieldFocusNodecanRequestFocus 参数来实现相同的功能。

背景

#

添加 TextField.canRequestFocus 是为了支持 DropdownMenuDropdownMenu 有一个有时不具备交互性的 TextField。但是,可以通过设置 TextFieldFocusNodecanRequestFocus 参数来实现相同的功能。DropdownMenu 已迁移到此方法,其他用例也应遵循相同的模式。

在调试模式下运行使用 TextField.canRequestFocus 的应用时,会显示以下错误:“使用 focusNode 代替”。具体来说,这意味着用户应该将 FocusNode 传递给 TextField.focusNode,并设置 FocusNode.canRequestFocus 参数。

迁移指南

#

要迁移,请移除 TextField.canRequestFocus 参数。创建一个 FocusNode,并将 FocusNode.canRequestFocus 参数设置为所需的值,然后将其传递给 TextField.focusNode

迁移前的代码:

dart
class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return TextField(
      canRequestFocus: false,
    );
  }
}

迁移后的代码:

dart
class _MyWidgetState extends State<MyWidget> {
  final FocusNode _focusNode = FocusNode(canRequestFocus: false);

  @override
  Widget build(BuildContext context) {
    return TextField(
      focusNode: _focusNode,
    );
  }
}

时间线

#

包含的版本:已回滚,等待重新发布
稳定版本中:尚未发布

参考

#

API 文档:

相关问题:

相关 PR: