Как стать автором
Обновить

Комментарии 6

Интересно, пишите ещё.

Вы самостоятельно пишете «с нуля» всю CRM?

Добрый день! Спасибо за ваш комментарий.

Да, пишу с нуля. Вернее написал первую версию с нуля, теперь переписываю её снова с нуля, но уже с учётом архитектуры и возможного масштабирования.

Мне как новичку, не имеющему большого опыта создания своих виджетов, этот процесс показался затратным по времени, потому что необходимо скомпоновать виджеты, определить все методы и параметры, подумать над логикой поведения. Я понял что это, в целом, является излишним.

А откуда возьмется опыт, если не создавать свои виджеты? Понятно, что если опыта нет, то будет долго и плохо. Например, конкретно в этом случае можно было взять стандартный DrodownButton и кастомизовать его, а не изобретать странный велосипед с MouseRegion и Stack.

А уж тащить ради этого левый пакет, ну это уже какой-то npm-синдром.

Вся статья, это вопрос – писать виджет самому или искать готовый пакет? Ну тогда ответ: it depends. Но в 90% случаев, лучше писать самому. Сначала – для обучения, потом – чтобы не скатываться в dependency hell там, где это совершенно не нужно.

Спасибо за комментарий!

На сколько помню, мне не удалось кастомизировать так как надо штатный DropdownButton. Но допускаю что не досконально изучил возможности этого виджета и работу с ним.

MouseRegion нужен для изменения цвета фона строки над которым находится указатель, ведь весь UI конкретного модуля - исключительно для web application. Хотя, теперь можно наверно и в нативку винды завернуть.

Stack нужен для того, чтобы элементы не сдвигались. Если взять Column, то при нажатии на выпадающий элемент остальные просто сдвинутся вниз на соответствующую высоту. А Stack как раз позволяет сделать этакий overlap.

Может быть для этого всего можно было использовать какие то другие виджеты, но у меня получилось то что я хотел :)

Stack нужен для того, чтобы элементы не сдвигались. Если взять Column, то при нажатии на выпадающий элемент остальные просто сдвинутся вниз на соответствующую высоту. А Stack как раз позволяет сделать этакий overlap.

Для этого в том же DropdownButton используется Overlay, он даст ряд преимуществ.

Может быть для этого всего можно было использовать какие то другие виджеты, но у меня получилось то что я хотел :)

Можно было, но для этого нужен опыт, который нужно нарабатывать написанием виджетов, как я уже упоминал выше. А подключение сторонних пакетов этого опыта не даст, к тому же, чаще всего UI-пакеты (из моего опыта) довольно сомнительного качества.

Опять же, говоря о приложении в целом, одно дело, если вы берете готовый UI-kit с возможностью кастомизации, и используете его (почти) целиком (например, https://pub.dev/packages/macos_ui) – тут подключение библиотеки оправдано. А другое дело, когда на каждый компонент будет отдельный пакет, и потом все это кастомизовать и поддерживать... Флаттер – это уже, в первую очередь, UI-фреймворк, причем с довольно хорошо продуманным API и хорошей библиотекой стандартных компонентов. Советую больше времени потратить на изучение самого фреймворка и стандартных виджетов, чем на поиск и кастомизацию сторонних пакетов.

Я в вообще и сам не приветствую множество сторонних зависимостей. Большое спасибо за ценный совет! Буду изучать!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации