Flutter TextField在导航到另一个屏幕后获得焦点
在我的项目中,我将整个Flutter TextField在导航到另一个屏幕后获得焦点,flutter,dart,keyboard,Flutter,Dart,Keyboard,在我的项目中,我将整个MaterialApp包装在一个gesturedector中,当用户使用这段代码点击屏幕时,它应该会关闭键盘 FocusScope.of(context).unfocus() 在测试了多个场景后,它不起作用,所以我决定用错误的方法来做 FocusScope.of(context).requestFocus(FocusNode()) 但现在我遇到了另一个问题。下面是我的代码,它是由MaterialApp的routesbuilder实例化的一个简单屏幕 import 'pa
MaterialApp
包装在一个gesturedector
中,当用户使用这段代码点击屏幕时,它应该会关闭键盘
FocusScope.of(context).unfocus()
在测试了多个场景后,它不起作用,所以我决定用错误的方法来做
FocusScope.of(context).requestFocus(FocusNode())
但现在我遇到了另一个问题。下面是我的代码,它是由MaterialApp
的routes
builder实例化的一个简单屏幕
import 'package:flutter/material.dart';
class TestScreen extends StatefulWidget {
@override
_TestScreenState createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
TextFormField(),
FlatButton(
onPressed: () => Navigator.push(context,
MaterialPageRoute(builder: (context) => TestScreen())),
child: Text('Test'))
],
),
);
}
}
在搜索了大量与焦点管理相关的GitHub问题之后,似乎没有人知道什么是正确的方法。最后,这行代码解决了我的问题:
WidgetsBinding.instance.focusManager.primaryFocus?.unfocus();
我不知道它的副作用,但它目前正在发挥作用。在搜索了大量与焦点管理相关的GitHub问题后,似乎没有人知道什么是正确的方法。最后,这行代码解决了我的问题:
WidgetsBinding.instance.focusManager.primaryFocus?.unfocus();
我不知道它的副作用,但它目前正在发挥作用。您在这里面临两个问题:
TextField
时,该焦点仍处于焦点上。请参阅此主题的讨论
手势检测器
,它们由onTap指针手势触发。您用来解除焦点的包装器,以及用来导航到另一条路线的FlatButton
。点击按钮时,底层的gestureRecognitor
将此事件的hanlding控制权交给按钮,并且不会调用包装器GestureDetector
opTap()(这意味着不会调用unfocus)
您在这里面临两个问题:
TextField
时,该焦点仍处于焦点上。请参阅此主题的讨论
手势检测器
,它们由onTap指针手势触发。您用来解除焦点的包装器,以及用来导航到另一条路线的FlatButton
。点击按钮时,底层的gestureRecognitor
将此事件的hanlding控制权交给按钮,并且不会调用包装器GestureDetector
opTap()(这意味着不会调用unfocus)
兄弟,试试看,我想你没有回答这个问题。此库正在更改滚动行为@parthpitroda为什么不在按下时执行FocusScope.of(context).unfocus()?它不工作且
TextField
仍处于焦点@jitsm555是否先关闭键盘,然后导航?你的问题不清楚,兄弟,试试看,我想你没有回答这个问题。此库正在更改滚动行为@parthpitroda为什么不在按下时执行FocusScope.of(context).unfocus()?它不工作且TextField
仍处于焦点@jitsm555是否先关闭键盘,然后导航?你的问题不清楚谢谢你的回答,但我认为你误解了这个问题。问题是,在取消“文本字段”的焦点后,当我按另一条路线时,键盘会弹出,询问您的答案,但我认为您误解了问题。问题是,在取消“文本字段”的焦点后,当我按下另一个路径时,键盘会弹出