TGViewer
Юрий Петров | ai engineering Юрий Петров | ai engineering @mobile_developing · 1.57K subscribers
Post #520 1.61K
Всем привет. Так как бываю на очень много разных проектов, и вижу разные реализации подписки блок на блок. Хотел бы узнать, про то как по вашему мнению лучше подписывать блок на блок. Например, необходимо отслеживать в блоке профиля состояние изменения магазина, авторизации и так далее. И реагировать при изменении определённым образом.
Для примера написал приложение, где есть блок счетчик и есть блок слушатель, который просто дублирует значение счетчика.

Есть несколько вариантов:

1. Подписка блок на блок при передаче блока в конструктор. Но такой подход нарушает правило мягкой связности объектов в domain слое. Получается, что есть жесткая связка между блоками. А это не хорошо. Ну и плюс нагрузка на блок, создание подписок и слушателей, хотя он не должен этого делать. Пример со простым счетчиком и можно глянуть здесь:
https://dartpad.dev/?id=d06329447bf96b62facffafb985eda04

2. Второй вариант. В данном случае подписка происходит на уровне UI в методе initState. То есть, по сути мы создаем подписку на изменения блока на том экране, где это надо. И удаляем когда уходим с экрана. В этом случае блоки не связаны, и сильно разгружены, так как нет подписок внутри блока. Но есть подписка который надо создавать и удалять.
https://dartpad.dev/?id=d4e1141475241f9f713778fbcec8df52

3. Третий вариант, инициализация подписки внутри блока listener. В этом случае блоки не связаны, и сильно разгружены, так как нет подписок внутри блока. Не надо создавать подписки, удалять и так далее.
https://dartpad.dev/?id=bc88d9a6f4320f060c695393eb088a66

4. И последний вариант, через общий репозиторий (аля шина событий). В данном случае UI не занимается подписками. Но есть лишняя сущность репозиторий, который нужно прокидывать в конструкторы блоков.
https://dartpad.dev/?id=1a96bba067b25e330f578d9f2e57b8c7

Как думаете, какой вариант самый лучший? Хотелось бы послушать ваше мнение. Если вам не понравится не один из вариантов, пожалуйста напишите свой в комментариях, а лучше приложите ссылку на DartPad
  • 👍 1
More from @mobile_developing
  1. Oct 2, 2026У открытого агента DeepSeek Harness появилось приложение для Windows и macOS Агент под лиц…
  2. Sep 30, 2026По просьбам учащихся выложил полный гайд по работе с Hugging Face, где в итоге вы можете в…
  3. Sep 30, 2026Очень хорошие новости! Байкал Электроникс показала российское GPGPU-ядро с поддержкой CUDA…
  4. Sep 26, 2026Ну погнали ☺️
  5. Sep 24, 2026Я давно в мобильной разработке и быстро замечаю баги в приложениях. Причём не в каких-то п…
  6. Sep 23, 2026Благодарю ребят за такие тёплые слова, модули про Hugging Face добавлю, я думаю будет очен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →