0

我正在为我的项目使用这个包:flutter_bloc

但是当我的主屏幕有 2 个小部件时,我遇到了问题。1 个小部件显示当天最多浏览量的新闻,1 个小部件显示适合每个用户对象的新闻。这些案例中的每一个都需要不同的 api。

每个小部件都有两种状态:加载和加载。那么我可以提出这个案例的最佳方法是什么?我不想在 1 个屏幕中使用 2 个 bloc,我希望它们只是 1 个 home_bloc。

4

1 回答 1

0

可以结合两个网络调用,直接调用

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
}

这就是您可以为两个小部件实现单个事件和单个状态的方法。

于 2020-05-12T03:40:03.983 回答