Найти тему

WStore - зачем нужна ещё одна Flutter библиотека для State-менеджмента?

Оглавление

Привет! Занимаюсь разработкой библиотеки WStore - это Flutter библиотека для управлением состоянием виджетов.

Зачем она понадобилась? Есть же Bloc, Redux, GetX... В чём проблема?

Проблема 1: Нужно писать очень много кода для простых вещей

-2

Нужно эммитить события, делать их обработчики, оборачивать всё в стримы за которыми потом следить - подписываться, отписываться... Мне нужно просто цифру на экране обновить!!! Вы чего?

Проблема 2: Нужно погружаться в абстракции на которых это работает

-3

Есть эммитер, есть консьюмер, есть редьюсер, актионс. Есть всякие синки, контроллеры, стримы, лиссенеры, эвенты. Есть ещё стейты (не путать со стейтами виджетов!)... Да вы охренели что ли?

Проблема 3: Сложна! Сложна!! Сложна!!!

-4

Какого хрена это так сложно? Вас в детстве менторы не учили сложность прятать внутрь? Нет, я конечно понимаю, когда ты это всё освоил - можно ходить и упиваться чувством собственной важности. Можно еще на это всё сверху генератор кода накинуть - ещё красивее будет. {Сарказм}

Есть ли свет в конце?

В то же время мне нравится идеология Flutter - концепция виджетов, концепция стейтлесс и стейтфул, концепция билдеров. В стейтфул виджете всё ведь просто - вот переменная с текстом, вот мы её выводим, вот мы её меняем и вызываем setState и всё обновилось! Никаких сложностей! Никаких потоков с эммитерами событий. Почему так не сделать для всего экрана? И вот в этом самом месте и зародился WStore.

Идея проста до безобразия - создаем стору, в этой сторе переменную, переменную передаем в билдер который будет за ней смотреть, когда переменная изменилась делаем setStore и те и только те билдеры которые за ней смотрят изменились. Да, банальный нотифай-лисенер только за тем исключением что в сторе может быть много разных переменных и билдеры следят только за изменением своих переменных, а не ребилдятся при каждом изменении сторы:

GitHub - devmaslove/wstore: A flutter state management library that helps add reactivity to widgets.

Сверху получается простой и понятный интерфейс, а все сложности с подписками, стримами, инхеретед-виджетами спрятаны глубоко внутри подальше от неокрепших умов.

Такой подход открыл много возможностей, о которых я напишу в другой раз ;)