跳至主要内容

已弃用的 TextField.canRequestFocus

摘要

#

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

背景

#

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

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

迁移指南

#

要进行迁移,请移除 TextField.canRequestFocus 参数。创建一个具有 FocusNode.canRequestFocus 参数(设置为所需值)的 FocusNode,并将其传递给 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