169 похожих чатов

Можно ли репозиторий сделать синглтоном и хранить в нем последние

загруженные данные?

3 ответов

12 просмотров

Нет нельзя. Точнее физически можно, но не стоит. Стоит немного подробнее раскрыть что такое синглтон, ведь это класс, который сам гарантирует, что будет создан только Один объект данного класса. Это неправильно и неправославно. Что мы можем сделать с этим ? Переложить ответственность на другой класс. Но как это сделать чтобы это было красиво ? Нужно использовать что-то такое, что используется во флаттере. Например прикольно сделать репозиторий похожим на MediaQuery или на Theme. То есть у него должен метод of, который нам предоставит доступ к нашему репозиторию, используя контекст. Значит нужно заюзать inheritedWidget (чтобы не писать код руками в vscode можно использовать расширение flutter snippets ) Но куда положить ? Конечно в самый корень абстрактного(воображаемого) дерева виджетов. Но тут есть нюанс, ведь репозитории могут зависеть от других репозиториев или каких-то других сервисов. Например NewsRepository требует AuthRepository. Тогда стоит немного подумать и разместить NewsRepository ниже чем AuthRepository.

Daniil Koliasnikov
Нет нельзя. Точнее физически можно, но не стоит. С...

Но и дальше возникает нюанс. Ведь может такая ситуация, когда нужно превентивно защититься от создания NewsRepository, до тех пор, пока пользователь не станет авторизованным (например не грузить репозиторий новостей до тех пор пока мы не уверены, что у пользователя есть подписка на определенный категории новостей) . Тогда стоит поместить NewsRepository ниже BlocBuilder, который возвращает разные экрана в зависимости от состояния AuthBloc.

Daniil Koliasnikov
Но и дальше возникает нюанс. Ведь может такая ситу...

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

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта