Comments 7
Я пытался на нём делать таймер помодоро с большим количеством вложенных меню и окон (около 10). И столкнулся с проблемой, что сложную логику писать там проблематично. У меня не получилось как-то всё красиво организовать. Ну я и забил.
Не зря у них все демки состоят из двух-трёх экранов. И не просто так тот же lazygit использует другую либу для отрисовки интерфейса в терминале.
Мне кажется что у либы требует нетипичного подхода, который может развиться только после написания на ней проектов 2-3 на ней + ее больно дебажить
По ней бы пригодился хороший гайд по струтуре сложных приложений, с кучей вьюх и лейаутов (типа project layout), но из вариантов только смотреть их examples и чужие репы с большими приложениями.
Но мне очень понравилась ее гибкость и то как она заставляет голову думать об организации кода, эдакий мини челенж))
Textual на py будет удобнее в работе. Но у него не самая хорошая оптимизация
Для простеньких вещей оно и правда удобное и красивое, хотя, тут мне кажется больше заслуга lipgloss.
А когда надо что-то сложнее спиннера вывести -- тут уже начинаются всякие приключения.
Не так давно нужно было слепить утилитку небольшую, в стиле mc, нужно выводить табличку, и с каждой строкой что-то делать (в отдельном модальном диалоге) -- получается какая-то дичь. Не знаю, может быть это я слишком тупенький, или что-то ещё, но пришлось наделать кучу костылей...

насколько я видел в сторонних либах (они в репе баблти указаны) есть overlay view, возможно это то что нужно:)
У меня и используется rmhubbert/bubbletea-overlay.
Основное недовольство у меня было в том, что всё приходится делать самому:
Пришлось завести отдельный глобальный канал для событий, через которые и отправляются ивенты открытия/закрытия/изменения нужной модалки
Приходится самому обрабатывать ивенты, как в случае с модалками, в Update либо перенаправляем в модалку события, либо в основное окно, то же самое и внутри модалок, в зависимости от того что сейчас активно (форма или кнопки), туда и направляем события, и в целом код превращается в какую-то лапшу
Нет никакой связи моделей с родителями, образно говоря, когда у тебя в модель кнопки Save прилетает событие "нажали Enter", невозможно сделать нечто аналогичное
$(this).parents('dialog').find('input')
, поэтом приходится делать обработку событий на верхнем уровне (dialog), который "знает о детях всё".
Но повторюсь, вполне может быть то, что я в чём-то не разобрался, или что-то не понял, но как бы я не пытался найти каких-то комплексных примеров, где были бы решены "задачи как у меня" -- ничего не вышло)
На каком-нибудь vue я бы это накидал раз в 10 быстрее :)
Bubble Tea — TUI-фреймворк для Go. Мои открытия и ошибки