我正在为我的项目使用这个包:flutter_bloc。
但是当我的主屏幕有 2 个小部件时,我遇到了问题。1 个小部件显示当天最多浏览量的新闻,1 个小部件显示适合每个用户对象的新闻。这些案例中的每一个都需要不同的 api。
每个小部件都有两种状态:加载和加载。那么我可以提出这个案例的最佳方法是什么?我不想在 1 个屏幕中使用 2 个 bloc,我希望它们只是 1 个 home_bloc。
我正在为我的项目使用这个包:flutter_bloc。
但是当我的主屏幕有 2 个小部件时,我遇到了问题。1 个小部件显示当天最多浏览量的新闻,1 个小部件显示适合每个用户对象的新闻。这些案例中的每一个都需要不同的 api。
每个小部件都有两种状态:加载和加载。那么我可以提出这个案例的最佳方法是什么?我不想在 1 个屏幕中使用 2 个 bloc,我希望它们只是 1 个 home_bloc。
可以结合两个网络调用,直接调用
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
}
这就是您可以为两个小部件实现单个事件和单个状态的方法。