Здравствуйте, bnk, Вы писали:
bnk>А почему просто не сделал глобальный Flutter Block (AppBlock)? bnk>Вроде как это и есть вполне типичный паттерн использования (типа context в react)
Не принято делать единый глобальный для всего приложения state и bloc, так не предусмотрено. Причина:
1. Bloc привязан к куску формы — при изменении связанного state (это небольшой кусочек) — меняется только эта часть формы. А иначе, если у вас всего 1 bloc и 1 state — какое-то маленькое значение внутри state изменится — и вам нужно будет обновлять все глобально, а это уже заметно.
2. Если оставить все как есть (много разных state и bloc), но дополнительно создать обертку, которая как бы объединяет все state-объекты — то проще не станет. Вам нужно после изменения определенных state не забывать вызвать emit для связанных bloc, иначе ничего не обновится. Как бы смысла нет.
Т.е. изначально не предусмотрен такой сценарий и особо его не натянешь.
bnk>Вообще полно таких библиотек: Redux, Zustand, MobX, вагон их
Так там же не обязательно делать глобальный для приложения? Но все не проверял.
bnk>Из минусов global state management — global state должно быть неизменяемым, и каждая "операция" должна создавать новое, чтобы это нормально работало.
Это плохой вариант. Нужно чтобы как раз было изменяемым — но отслеживаемым. Т.е. изменили поле — все UI, которые его используют — обновились сами.