Blo c Pattern: Каждый экран получает свой собственный blo c? - PullRequest
2 голосов
/ 24 января 2020

Я изучаю шаблон blo c для Flutter, и, кажется, есть повторяющийся совет, что "каждый экран должен иметь свой собственный blo c".

Но что, если вы запросите у своего сервера данные, которые будут использоваться более чем на одном экране? Кажется излишним и даже расточительным попадание на сервер несколько раз для одного и того же фрагмента данных, особенно если вы знаете, что данные не изменились (например, когда не использовались никакие операции, изменяющие / обновляющие).

Можно ли как-то хранить эти данные, чтобы их можно было повторно использовать? Это хорошая идея для хранения данных, используемых таким образом на уровне хранилища? Или это просто приемлемая стоимость использования блоков?

1 Ответ

1 голос
/ 24 января 2020

Архитектурные решения всегда высоко оценены и не имеют серебряной пули.

Ну, вот вам go.


Есть ли в любом случае, вы можете хранить эти данные как-то, чтобы использовать их повторно?

Offcource yes. Вы можете создать свое приложение следующим образом.

Виджеты -> Blo c -> Репозиторий -> Локальная база данных / Удаленный API

Итак, ваш блок c никогда не будет делать никаких API-вызовов напрямую, но ваш репо-уровень подойдет. Следовательно, уровень репо может решить, получать ли данные из удаленного API или локальной БД или даже из кеша в памяти. Таким образом, вы можете повторно использовать уже кэшированные данные на нескольких экранах вашего приложения.

Интересно то, что модульное тестирование вашего кода будет очень простым, если вы создадите свое приложение таким образом.


Стоит ли хранить данные, используемые таким образом, на уровне хранилища?

Да.

...