已弃用的 TextField.canRequestFocus
摘要
#TextField.canRequestFocus
已弃用。可以通过设置 TextField
的 FocusNode
的 canRequestFocus
参数来实现相同的功能。
背景
#添加 TextField.canRequestFocus
是为了支持 DropdownMenu
,DropdownMenu
有一个有时不具备交互性的 TextField
。但是,可以通过设置 TextField
的 FocusNode
的 canRequestFocus
参数来实现相同的功能。DropdownMenu
已迁移到此方法,其他用例也应遵循相同的模式。
在调试模式下运行使用 TextField.canRequestFocus
的应用时,会显示以下错误:“使用 focusNode
代替”。具体来说,这意味着用户应该将 FocusNode
传递给 TextField.focusNode
,并设置 FocusNode.canRequestFocus
参数。
迁移指南
#要迁移,请移除 TextField.canRequestFocus
参数。创建一个 FocusNode
,并将 FocusNode.canRequestFocus
参数设置为所需的值,然后将其传递给 TextField.focusNode
。
迁移前的代码:
class _MyWidgetState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return TextField(
canRequestFocus: false,
);
}
}
迁移后的代码:
class _MyWidgetState extends State<MyWidget> {
final FocusNode _focusNode = FocusNode(canRequestFocus: false);
@override
Widget build(BuildContext context) {
return TextField(
focusNode: _focusNode,
);
}
}
时间线
#包含的版本:已回滚,等待重新发布
稳定版本中:尚未发布
参考
#API 文档:
相关问题:
相关 PR:
- 向 DropdownMenu 添加 requestFocusOnTap
- 将 TextField.canRequestFocus 替换为 TextField.focusNode.canRequestFocus
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。