簡體   English   中英

如何阻止鍵盤被解雇?

[英]How to stop keyboard from getting dismissed?

我在 flutter 中使用textformfield 。每當用戶鍵入內容時,我都會給他建議。 當用戶點擊建議時,鍵盤會自動消失。 我想阻止鍵盤被解雇。 怎么做? 我希望用戶不斷添加建議。 提前致謝。

來自FocusNode文檔

FocusNodes 是 ChangeNotifiers,因此可以注冊一個偵聽器以在焦點更改時接收通知。

 final _focusNode = FocusNode();

因此,當您將該addListener分配給TextFormField時,您可以向它添加FocusNode以跟蹤它發生的變化:

TextFormField(
 focusNode: _focusNode,
 // ...
 ),

您可以添加偵聽器,然后檢查它是否具有焦點,這意味着您正在檢查TextFormField字段是否獲得焦點,這也意味着如果顯示鍵盤:

_focusNode.addListener(() {
  if(!_focusNode.hasFocus) {
    _focusNode.requestFocus();
  }
});

這樣,它將保持TextFormField的焦點,當你完成它時,你可以調用removeListener()

你可能有這個

FocusScope.of(context).unfocus();

或者最終的 FocusNode textFieldFocusNode = FocusNode();

TextFormField(
             focusNode: textFieldFocusNode,
              onTap: () async {
               textFieldFocusNode.requestFocus();
                 },
)

將 FocusNode 賦予 Textformfield 並將該特定節點集中在點擊建議上,如下所示:

//Assign this inputNode to TextFormField
FocusNode inputNode = FocusNode();

//Somewhere on TextFormField
TextFormField(
  focusNode:inputNode
)

// to open keyboard call this function;
void openKeyboard(){
   FocusScope.of(context).requestFocus(inputNode)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM