如何在我的项目中应用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?的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助了解 flutter_bloc 如何注入 bloc

如何使用flutter bloc模式通过分页加载数据列表?

为啥我的状态之一在我的测试期间没有被触发

Bloc如何收听流并发出状态

如何在我的 android 应用程序中更新 gradle

flutter_bloc :使 initialState 方法异步