显示键盘时再次调用 Flutter Bloc Builder

Flutter Bloc Builder is called again when the keyboard is shown

我使用 flutter blocs 有一段时间了,我遇到了一个问题,我不知道什么是解决它的最佳方法。 我有一个使用 bloc 的 Widget。这个小部件有一个输入文本字段和一个触发调用 bloc.sendRequest(text) 的网络请求的按钮。该集团根据服务器响应发出 ResponseState(bool success, string message)。如果出现错误,bloc 生成器将显示一个弹出窗口,显示错误消息并要求用户更改输入字段。 当用户在显示错误弹出窗口后按下文本输入时,问题就来了。 Flutter 刷新 builder bloc,使用的状态是之前的状态,它包含已经显示的错误消息,导致 builder 再次显示弹出窗口。解决这种情况的最佳方法应该是什么?我想过一些解决办法:

  1. ResponseState 添加时间戳,如果状态与以前相同,则不重建构建器。
  2. 使 bloc.sendRequest(text) 调用 return 结果,并在 Future 完成后根据需要显示弹出窗口
  3. 使用 ResponseState
  4. 中的时间戳跟踪已显示的弹出窗口以避免显示两次

解决这个问题的最佳方法是什么?我错过了什么?

谢谢,

BlocBuilder 可以随时重建,因此对于每个状态只需要触发一次的事件,最好使用 BlocListener