一起使用flutter bloc库和websockets的设计建议
Posted
技术标签:
【中文标题】一起使用flutter bloc库和websockets的设计建议【英文标题】:Design recommendations for using flutter bloc library and websockets together 【发布时间】:2020-06-06 13:21:33 【问题描述】:我们有一个 Flutter 应用程序,它使用 websockets 进行服务器发起的通信。我们使用 flutter_bloc 作为整个应用程序的状态管理机制。 UI 事件通过 Bloc 状态转换和 BlocBuilder 小部件传递给小部件。
另一个要求是,应该根据通过 websocket 从服务器接收到的特定事件重新渲染一些小部件。
StreamBuilder 是一种对 websocket 上接收到的事件做出反应的自然方式。但不确定将其合并到使用 Blocs 的 uI 小部件中的最佳方法。
当 Bloc 和 websocket 通道一起使用时,希望社区提供关于清晰结构化代码的意见。
【问题讨论】:
【参考方案1】:您可以使用 BlocBuilder:
在您的 bloc 中侦听 websocket 消息并添加新 bloc 事件 bloc 事件保存 websocket 消息 在mapEventToState
中,您的事件被映射到包含消息内容的新集团状态
谈the official todo example:
您会收到一条 websocket 消息,提示您添加了新的待办事项 您添加了一个新的集团事件TodoAdded(message)
在mapEventToState
中将待办事项添加到待办事项列表中并产生一个新状态TodosLoadSuccess(todos)
由于 BlocBuilder,UI 应该会自动重建
【讨论】:
socket代码应该放在哪里?我认为你应该更清楚答案。我曾尝试将 socket codr 放入 costructor 的体内。但它不起作用。以上是关于一起使用flutter bloc库和websockets的设计建议的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Flutter Bloc 与 Firebase 电话身份验证一起使用
Flutter BLOC 和 Provider 如何注册在一起