簡體   English   中英

在鍵盤打開之前在 TextField 中點擊打開對話框 - Flutter

[英]Open dialog on tap in TextField before keyboard opens - Flutter

在 TextField 中點擊會使其獲得焦點並彈出鍵盤。 在她/他輸入文本字段之前,我需要向用戶顯示一個帶有選擇的對話框。

我可以做到,但它很丑:首先 TextField 獲得焦點並且鍵盤出現,然后彈出對話框並且鍵盤消失(因為 TextField 失去焦點)。 然后焦點回到點擊的 TextField 上,鍵盤又回來了。

我想避免所有的起伏,我不能添加任何額外的按鈕來從其他地方調用對話框,然后點擊 TextField。

有沒有辦法讓對話框首先出現(沒有鍵盤出現),然后選擇焦點轉到點擊的文本字段?

你可以遵循一個簡單的技巧。 TextField 有一個只讀屬性,您可以在該只讀屬性上使用標志。 當用戶從彈出窗口中選擇一個選項時,將焦點更改為該 TextField。

bool readOnly = true;
FocusNode f1 = FocusNode();

TextFormField(                                
     read-only: readOnly ,
     focusNode: f1,
     decoration: InputDecoration(
     border: OutlineInputBorder(
     borderRadius: BorderRadius.circular(4.0)
      ),
      ),
     style: TextStyle(
      color: Colors.orange,
      fontSize: 15.0,
      ),
      ),

選擇時在對話框代碼上:

readOnly = false;
FocusScope.of(context).requestFocus(f1);

將焦點節點的 map 存儲在范圍模型/上下文提供程序中

檢查 map 是否應該在特定焦點節點上打開對話框。

暫無
暫無

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

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