如何解决Flutter:如何在不失去焦点的情况下为 TextField 在 onSubmitted() 上关闭键盘
我有一个 TextField 小部件,在提交 onSubmitted()
后,我想通过 readonly = false
继续关注这个 TextField,但同时我想最小化键盘或关闭它,我不能用
FocusScope.of(context).requestFocus(new FocusNode());
或
FocusScope.of(context).unfocus();
或
SystemChannels.textInput.invokeMethod('TextInput.hide');
解决方法
当 onSubmit 被调用时,键盘将被禁用,因为 readOnly 为真但 TextField 将获得焦点。 但是当你点击 TextField 时,键盘会出现,因为现在 readOnly 是 false 并且它已经有了焦点
class _MyAppState extends State<MyApp> {
bool read = false;
FocusNode focusNode = FocusNode();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',theme: ThemeData(
primarySwatch: Colors.blue,),home: Scaffold(
body: Center(
child: Container(
padding: EdgeInsets.all(10),child: TextField(
onTap: () {
read = false;
setState(() {});
},focusNode: focusNode,readOnly: read,cursorColor: Colors.blue,onSubmitted: (val) async {
print(val);
read = true;
focusNode.requestFocus(new FocusNode());
setState(() {});
},));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。