概述

#

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

背景

#

TextField.canRequestFocus 的添加是为了支持 DropdownMenu,因为 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