问题描述
我有一个带有单个 TextField(自动对焦:true)和一个 FlatButton 的屏幕。当我不使用 SlideTransition 时,TextField 在访问屏幕时正确获得焦点。但是,当我简单地更改路线以使用 SlideTransition 制作到第二页的漂亮动画时,TextField 不会自动聚焦。
示例:
自动对焦适用于:
Navigator.push(context,MaterialPageRoute(builder: (context) => SecondPage()),);
自动对焦不适用于(此 article 中的 EnterExitRoute 类):
Navigator.push(context,EnterExitRoute(exitPage: FirstPage(),enterPage: SecondPage()));
如何在使用动画到 SecondPage 时让 TextField 自动聚焦?
解决方法
我终于使用 FocusNode 完成了这项工作。我在发布之前尝试过 FocusNode。让它工作的不同之处在于 initState 中没有这些行,如示例所示:
myFocusNode = FocusNode();
FocusScope.of(context).requestFocus(myFocusNode);
initState 没有被调用。我正在使用 StatefulWidget。我不确定为什么 initState 没有被调用。也许有人可以提供一个理由?