繁体   English   中英

Flutter:如何在不丢失焦点的情况下关闭 TextField 的 onSubmitted() 键盘

[英]Flutter: How to close keyboard on onSubmitted() for TextField without lost focus

我有一个 TextField 小部件,在提交onSubmitted()之后,我想继续关注这个 TextField,使用readonly = false但同时我想最小化键盘或关闭它,我不能使用

 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(() {});
                    },
                  ),
                ),
              ),
            ));
      }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM