概述

#

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

背景

#

添加 TextField.canRequestFocus 是为了支持 DropdownMenu,它有一个有时不具有交互性的 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