具有多个firebase请求的flutter bloc cubit最佳实践

Posted

技术标签:

【中文标题】具有多个firebase请求的flutter bloc cubit最佳实践【英文标题】:flutter bloc cubit best practice with multiple firebase request 【发布时间】:2021-08-17 09:45:29 【问题描述】:

我正在开发一个带有 firebase 的应用程序,我需要在一个屏幕上一次获取大量文档 当天的第一张图片,用户统计信息,待处理请求,朋友统计信息,然后是国家/地区统计信息。

*对不起,我的命名顺便说一句

class HomeSmileLoading extends HomeState 
const HomeSmileLoading();
@override
List<Object> get props => [];

与此类似,我有 HomeStatsLoading ,朋友统计...

这就是我在应用程序启动时执行代码的方式

HomeCubit() : super(HomeInitial()) 
imageOfday();
getStats();
//...

我觉得有更好的方法可以做到这一点.. 如果有人有任何提示或想法,我感谢您的帮助

【问题讨论】:

【参考方案1】:

好吧,您所做的并没有错,只是您无法并行加载所有数据。此外,在您的情况下,一个 Cubit 负责处理您应该加载的所有不同数据 - 它不是很灵活。

我建议你做的是:

    为每个数据源/功能创建一个不同的 Cubit(一个用于统计,一个用于请求等)。

    每个 Cubit 会有不同的状态:Initial、Loading、Loaded、Error - 根据您的需要,这些状态可能会有所不同。

    在为您的应用创建/提供 Cubits 时,在每个 Cubit 上调用 init/load 函数以加载初始数据:

    MultiBlocProvider(
      providers: [
        BlocProvider<StatsCubit>(
          create: (BuildContext context) => StatsCubit()..getStats(),
        ),
        BlocProvider<ImageCubit>(
          create: (BuildContext context) => ImageCubit()..imageOfday(),
        ),
        BlocProvider<AnyOtherCubit(
          create: (BuildContext context) => AnyOtherCubit()..loadData(),
        ),
      ],
      child: ChildA(),
    )
    

最好将 Cubits 拆分为每个功能,让它们只负责一件事情(例如处理身份验证、用户统计信息、任何特定数据等)。

【讨论】:

非常感谢你,我真的很感激

以上是关于具有多个firebase请求的flutter bloc cubit最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase - 搜索包含字符串的文档

从flutter应用程序到firebase的简单发布请求的最佳方法是啥?

firebase、flutter应该如何处理好友请求和邀请? [关闭]

Flutter / Firebase:管理员具有应用内功能或云功能?

Flutter - StreamProvider - 向 Firebase 发送重复出现的 XHR 请求

Flutter Firebase 存储:请求没有身份验证令牌