簡體   English   中英

使用 flutter_bloc 時清除文本字段

[英]clearing text field when using flutter_bloc

我有一個簡單的聊天頁面,其中包含一個ChatBloc和一個ReplyBox小部件,一個帶有發送按鈕的消息框。

我希望ReplyBox是可重用的,所以不具備ChatBloc的具體知識。 但是,我希望能夠從集團控制ReplyBox中的文本。 這被證明是非常困難的,因為文本字段需要使用TextEditingController

我試過的:

  • 使用TextFormField initialValue將來自 bloc 的文本傳遞到小部件中。 值更改時不重建。
  • 使用Key強制重建。 文本已更新但焦點丟失。
  • 使它成為一個帶有 TextEditingController 的有狀態小部件,而不是從 bloc 中獲取文本值,並且只是在按下按鈕時清除。 這工作正常,但它不靈活。 例如,如果出現發送錯誤,消息將被清除,而這是不應該的。

我沒有嘗試在集團中管理 TextEditingController。 這似乎不是正確的做法。

我看到第三種方法有望通過 StatefullWdiget 和 TextEditingController 解決您的問題。 我會為 ReplyBox 設置另一個集團,其中包含重置、更新等事件。在小部件中,我會將 ChatBloc 的 state 連接到 ReplyBloc。

在繪圖中可能是這樣的: 在此處輸入圖像描述

我在 BLoC 庫的存儲庫上問過類似的問題。 引用創作者 Felix Angelov 提供給我的答案:

我不建議這樣做。 imo 的正確方法是維護一個 TextEditingController 並在您想要清除輸入時調用 clear。

您可以在此處閱讀答案,也可以檢查整個問題。

暫無
暫無

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

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