【问题标题】:Flutter Bloc Builder is called again when the keyboard is shown显示键盘时再次调用 Flutter Bloc Builder
【发布时间】:2021-03-22 18:23:13
【问题描述】:

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

  1. 给ResponseState添加时间戳,如果状态和之前一样就不要重建builder。
  2. 让bloc.sendRequest(text) 调用返回结果,并在Future 完成后显示弹出窗口
  3. 使用ResponseState 中的时间戳跟踪已显示哪些弹出窗口以避免显示两次

解决此问题的最佳方法应该是什么?我错过了什么?

谢谢,

【问题讨论】:

  • 你在 didChangeDependencies 中做了什么吗?你能给我们看一下整个 dart 文件吗?
  • 文字太多,没有代码

标签: android ios flutter dart flutter-bloc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2019-12-17
    • 2022-11-14
    • 2018-02-14
    • 2021-08-01
    相关资源
    最近更新 更多