微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。