为什么我应该使用带有日历的 Bloc 而不是静态地图?

Geo*_*ios 2 flutter bloc

在 Flutter 中,我想使用table_calendar 包中的日历来设置班次并将员工分配给他们。

为此,我还使用sqflite 包中的本地数据库。

我在网上看到了一些教程,例如Database Storage in Flutter using Sqflite,将数据库与 Bloc 技术结合起来。

对于我的日历,我需要一个Map<DateTime,List<dynamic>>来控制事件。到目前为止,我使用了一个静态地图,我将在不同的类中使用它,例如shift_form和shift_calendar。

Bloc 的实现将以这样的方式开始:

class ShiftBloc extends Bloc<ShiftEvent, Map<DateTime,List<dynamic>> {...

为什么应该使用 Bloc 而不是静态 Map?

另外是否可以使用 Bloc 作为 Map 数据结构?编辑:-> 是的

但是,我应该如何为从 Firestore 获取的流实现块作为映射而不是列表呢?

PS 我正在使用Flutter Firestore Todos 教程结构。

mFe*_*ein 6

作为一般规则,您永远不会“必须”使用 BLoC 来做任何事情。

BLoC 和其他状态管理策略旨在更轻松地处理应用程序的多个部分同时需要的数据,并且当数据发生变化时需要更新。

对于简单的Widget来说,对数据的依赖度较低,一个简单的setState就应该绰绰有余,使用起来没有什么问题。

有些人只是将状态管理用于所有事情,而没有停下来分析手头的问题,这使得代码变得更加混乱。

如果您Map是本地的,则只需在本地使用它,如果您在多个地方需要它,则避免将其用作全局变量,因为这会使测试变得更加困难。

请记住,BLoC 只是一个以 Streams 作为输出、Syncs 作为输入的类,Firebase Firestore 类已经为您提供了一个 Stream,因此您的 BLoC 可能只是一个将 Firestore 上的数据适应您的 Map 的 Stream 转换。我真的不能说如何做到这一点,因为我不知道你的数据。