我有一个readonly = false小部件,在提交onSubmitted()之后,我想继续用onSubmitted()来关注这个TextField,但是同时我想最小化键盘或者关闭它,我不能使用
FocusScope.of(context).requestFocus(new FocusNode()); 或
FocusScope.of(context).unfocus();或
SystemChannels.textInput.invokeMethod('TextInput.hide');发布于 2021-04-10 08:32:11
当onSubmit被调用时,键盘将被禁用,因为readOnly是真的,但是TextField有焦点。但是当你点击TextField时,键盘就会出现,因为现在readOnly是假的,并且它已经有焦点了。
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(() {});
},
),
),
),
));
}
}https://stackoverflow.com/questions/67029055
复制相似问题