flutter - 使用flutter_bloc时清除文本字段

标签 flutter dart bloc state-management

我有一个带有ChatBlocReplyBox小部件的简单聊天页面,一个带有发送按钮的消息框。
我希望ReplyBox可重用,以免对ChatBloc有特定的了解。但是,我希望能够从集团控制ReplyBox中的文本。事实证明,这非常困难,因为文本字段期望使用TextEditingController
我尝试过的

  • 使用TextFormField initialValue将来自集团的文本传递到小部件中。值更改时不重建。
  • 使用Key强制进行重建。文本已更新,但是焦点丢失了。
  • 使用TextEditingController使其成为有状态的小部件,而不是从团体中获取文本值,而只是在按下按钮时清除它。可以,但不灵活。例如,如果有发送错误,该消息将被清除,而这不是应该的。

  • 我没有尝试在bloc中管理TextEditingController。似乎不应该这样做。

    最佳答案

    我看到第3种方法有望与StatefullWdiget和TextEditingController一起解决您的问题。
    我会为ReplyBox设置另一个块,其中包含诸如Reset,Update等事件。
    在小部件中,我会将ChatBloc的状态连接到ReplyBloc。
    在绘图中可能是这样的:
    enter image description here

    关于flutter - 使用flutter_bloc时清除文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64018365/

    相关文章:

    firebase - 获得当前用户时未设置我的变量

    flutter - 如何在 Flutter 中为小部件添加边框?

    flutter - Bloc-是否可以产生导航堆栈中上一页的状态?

    dart - 如何将小部件放置在行中包含的卡片内?

    firebase - 如何在 Flutter 中从 Firebase Auth 获取用户 ID?

    list - Flutter Dart List - 如何检查列表是否包含对象

    dart - Stream 可以一次收听一次还是一般一次收听?

    json - Flutter 如何在本地保存列表数据

    Dart - 在初始值设定项中只能访问静态成员

    flutter - 已经听过流,换屏后报错