Почему я должен использовать Blo c с календарем вместо карты Stati c? - PullRequest
2 голосов
/ 17 апреля 2020

В Flutter я хочу использовать календарь из пакета table_calendar , чтобы назначать смены и назначать для них сотрудников.

Также для этого я использую локальную базу данных из пакет sqflite .

Я видел несколько учебных пособий онлайн, например, Хранение базы данных во Flutter с использованием Sqflite , которые объединяют базу данных с технологией Blo c.

Для моего календаря мне нужен Map<DateTime,List<dynamic>> для управления событиями. На данный момент я использовал карту stati c, которую использовал бы в разных классах, например, shift_form и shift_calendar.

Реализация Blo c начиналась бы примерно так:

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

Почему я должен использовать Blo c вместо stati c Map?

Также возможно ли использовать Blo c в качестве структуры данных Map? Редактировать: -> Да, это

Но как мне реализовать блоки для потоков, которые я получаю из Firestore в виде карты вместо списка?

PS Я использую структуру Floster Firestore Todos Tutorial .

1 Ответ

3 голосов
/ 21 апреля 2020

Как правило, вам никогда не придется «использовать» BLo C для чего-либо.

BLo C и другие стратегии управления состоянием призваны упростить работу с данными, состоящими из нескольких частей. вашего приложения необходимо в то же время, и должны быть обновлены при изменении этих данных.

Для простых виджетов, низкой зависимости от данных, простого setState должно быть более чем достаточно, и в этом нет ничего плохого.

Некоторые люди просто используют State Management со всем, не останавливаясь для анализа проблема под рукой, это делает код более запутанным без причины.

Если ваш Map является локальным, просто используйте его локально, если он вам нужен в нескольких местах, чем избегайте его использования в качестве глобальной переменной поскольку это усложняет тестирование.

Помните, что BLo C - это просто класс с потоками в качестве выходов и синхронизацией в качестве входных данных, класс Firebase Firestore уже предоставляет вам поток, поэтому ваш BLo C может быть просто преобразованием потока, адаптирующим данные в Firestore к вашей карте. Я не могу сказать, как это сделать, потому что я не осведомлен о ваших данных.

...