簡體   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