结合使用 flutter bloc 库和 websockets 的设计建议
Design recommendations for using flutter bloc library and websockets together
我们有一个 Flutter 应用程序,它使用 websockets 进行服务器发起的通信。我们使用 flutter_bloc 作为整个应用程序的状态管理机制。 UI 事件通过 Bloc 状态转换和 BlocBuilder 小部件传送到小部件。
另一个要求是,有些小部件应该根据通过 websocket 从服务器接收到的特定事件重新呈现。
StreamBuilder 是对 websocket 上接收到的事件做出反应的自然方式。但不确定将其合并到使用 Blocs 的 uI 小部件中的最佳方式。
当 Bloc 和 websocket 通道一起使用时,希望社区提供关于清晰地构建代码的意见。
您可以使用 BlocBuilder:
- 在您的 bloc 中侦听 websocket 消息并添加新的 bloc 事件
- bloc 事件持有 websocket 消息
- 在
mapEventToState
中,您的事件被映射到包含消息内容的新 bloc 状态
- 您收到一条 websocket 消息,表明添加了新的待办事项
- 您添加了一个新的 bloc 事件
TodoAdded(message)
- 在
mapEventToState
中将待办事项添加到待办事项列表并生成新状态 TodosLoadSuccess(todos)
- 由于 BlocBuilder UI 应该会自动重建
我们有一个 Flutter 应用程序,它使用 websockets 进行服务器发起的通信。我们使用 flutter_bloc 作为整个应用程序的状态管理机制。 UI 事件通过 Bloc 状态转换和 BlocBuilder 小部件传送到小部件。
另一个要求是,有些小部件应该根据通过 websocket 从服务器接收到的特定事件重新呈现。
StreamBuilder 是对 websocket 上接收到的事件做出反应的自然方式。但不确定将其合并到使用 Blocs 的 uI 小部件中的最佳方式。
当 Bloc 和 websocket 通道一起使用时,希望社区提供关于清晰地构建代码的意见。
您可以使用 BlocBuilder:
- 在您的 bloc 中侦听 websocket 消息并添加新的 bloc 事件
- bloc 事件持有 websocket 消息
- 在
mapEventToState
中,您的事件被映射到包含消息内容的新 bloc 状态
- 您收到一条 websocket 消息,表明添加了新的待办事项
- 您添加了一个新的 bloc 事件
TodoAdded(message)
- 在
mapEventToState
中将待办事项添加到待办事项列表并生成新状态TodosLoadSuccess(todos)
- 由于 BlocBuilder UI 应该会自动重建