如何在我的项目中应用flutter_bloc?
Posted
技术标签:
【中文标题】如何在我的项目中应用flutter_bloc?【英文标题】:How can I apply flutter_bloc in my project? 【发布时间】:2020-08-27 18:07:33 【问题描述】:我正在为我的项目使用这个包:flutter_bloc。
但是当我的主屏幕有 2 个小部件时,我遇到了问题。 1 个小部件显示当天最多浏览量的新闻,1 个小部件显示适合每个用户对象的新闻。这些案例中的每一个都需要不同的 api。
每个小部件都有两种状态:加载和加载。那么我能提出这个案子的最好方法是什么?我不想在 1 个屏幕中使用 2 个 bloc,我希望它们只是 1 个 home_bloc。
【问题讨论】:
【参考方案1】:可以将两个网络调用结合起来,直接调用
try
List responses = await Future.wait([firstNetworkCall(), secondNetworkCall()]);
catch (e)
handleError(e)
并使用事件来触发网络调用
abstract class ExampleBlocEvent
ExampleBlocFetchData extends ExampleBlocEvent
// use the attributes you need here
并使用这样的状态
abstract class ExampleBlocState
class ExampleBlocLoading extends ExampleBlocState
class ExampleBlocHasData extends ExampleBlocState
// Data for first network call
// Data for second network call
这就是您可以为两个小部件实现单个事件和单个状态的方法。
【讨论】:
如何知道哪些数据对应于哪个调用添加到 ExampleBlocHasData 列表响应 = await Future.wait([firstNetworkCall(), secondNetworkCall()]); responses[0] 将包含第一次调用的结果,responses[1] 将包含第二次调用的结果。以上是关于如何在我的项目中应用flutter_bloc?的主要内容,如果未能解决你的问题,请参考以下文章