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

Добрый день! Разработкой монолитов и микросервисов занимаюсь давно на SQL/.NET. Flatter/Dart

начал изучать недавно. Посоветуйте хороший ресурс посвященный построению архитектуре приложений на Flatter/Dart. Пока для меня Flatter/Dart выглядит этаким зоопарком, нет единых практик и подходов. Интересует как реализовать принципы SOLID, DDD, Dependency Injection, Clear Architecture. Многие статьи которые читаю противоречат друг другу и явно указывают на индусское происхождение.
В качестве стейт системы решил выбрать BLOC, однако все описания и примеры используют 1-2 блока в системе. Попытка использовать BLOC как Mediatr в .NET не приводит к желаемому результату. Если предполагается несколько сотен блоков как реализовать взаимодействие между блоками?
Возможно не там ищу, может есть может что-то похожее на референсную архитектуру для приложений от Майкросовт?

15 ответов

25 просмотров

редакс как источник данных и миддлвар с бизнес логикой и блоки для поставки контента в виджеты

Смотри в сторону MobX.dart. Это примерный аналог MVVM для натива или Vue.js, если знаком с таким. Забудь про блок. Громоздкая неудобная хренотень. И не слушай чувака с редаксом.

N-P Автор вопроса
Sergio Molchanovsky
Смотри в сторону MobX.dart. Это примерный аналог M...

С MVVM не знаком. я до этого не писал фронтоые приложение. 15 лет только бек

N-P Автор вопроса
Sergio Molchanovsky
Смотри в сторону MobX.dart. Это примерный аналог M...

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

https://vas3k.club/post/10567

N P
мне bloc показался очень похожим на Mediatr библио...

Не ищи, прочитай доку по MobX, и делай как тут https://mobx.netlify.app Все кейсы покрывает. В качестве IoC возьми get_it

Sergio Molchanovsky
Смотри в сторону MobX.dart. Это примерный аналог M...

мввм для декларативной вёрстки нафиг не нужен, как и слушать ётунхейм чувака даже если у него шильдик админ

Каво, блок громоздкий, щитоо

redzed .
Каво, блок громоздкий, щитоо

Даже с версией 8.0 не сильно легче стало. Могу пояснить свою нелюбовь к блоку. Вот пример из моего проекта — блок карточек "что нового". Загружаем их при помощи кубита. Пишем сам кубит. Создаем 4 стейта: InitialState, LoadingState, DataState, ErrorState. И дальше мне понадобилось при нажатии на крестик скрывать весь блок карточек. И это в том же кубите уже сделать нельзя! Так как он только под загрузку данных. Это значит, надо написать ещё 1 кубит, в нем написать 2 стейта (VisibleState / InvisibleState), создавать его, считывать... Итого 2 кубита и 8 классов стейтов (а если блоки, то еще и ивенты написать). Насколько проще то же самое было бы в MobX сделать!

Sergio Molchanovsky
Даже с версией 8.0 не сильно легче стало. Могу поя...

Вы же сами сказали что он для управления данных, второй кубит с визибл/инвизбл не нужен, т.к он никакими данными не управляет Здесь можно обойтись, как я и говорил ранее, ValueNotifier'ом Стейты и эвенты классами уже никто не пишет, пишут единый класс НеймБлокСтейт и НеймБлокЭвент и в них фактори с именами и параметрами стейтов

redzed .
Вы же сами сказали что он для управления данных, в...

> пишут единый класс НеймБлокСтейт и НеймБлокЭвент и в них фактори с именами и параметрами стейтов Через freezed?

redzed .
Вы же сами сказали что он для управления данных, в...

BLoC ещё вынуждает писать по 10 раз одни и те же стейты: Initial/Loading/Data/Error, пускай даже через freezed, все равно дублирование кода получается. В MobX уже просто есть готовая надстройка над фьючей — ObservableFuture, чтобы отслеживать её статус (pending/rejected/fulfilled).

Sergio Molchanovsky
BLoC ещё вынуждает писать по 10 раз одни и те же с...

С одной стороны, я согласен то что иметь уже готовые надстройки порой удобно, но когда ты описываешь собственноручно состояния — ты знаешь что и при каких условиях может произойти, случится ли rejected при получении например кода 401 от дата провайдера или fullfilled если у нас вернулся пустой массив Проще говоря, имея свои стейты можно так же описывать и их условия, что как я считаю, повышает flexibility

Sergio Molchanovsky
BLoC ещё вынуждает писать по 10 раз одни и те же с...

Надо будет попробовать наследовать Bloc с данными реализованными стейтами в след. проекте

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта