Ответ
Мой выбор всегда начинается с вопроса: "Действительно ли нам нужна эта зависимость?". Для простой функциональности (например, форматирование даты) предпочитаю написать свою утилиту. Если зависимость необходима, оцениваю по следующим критериям:
1. Активность и поддержка (самое важное):
- Частота обновлений: Смотрю историю коммитов на GitHub. Пакет без обновлений более 6 месяцев — красный флаг, особенно с учетом частых релизов Flutter и Dart.
- Поддержка актуальных версий: Обязательно проверяю поддержку последней стабильной версии Flutter и Dart, а также
null-safety. - Issues/PR: Анализирую открытые issues (особенно критические баги) и то, как мейнтейнеры на них реагируют.
2. Качество и популярность:
- Pub.dev Score: Обращаю внимание на общий балл, но не как на абсолютную истину.
dio(10k+ likes) — стандарт для работы с сетью. - Документация: Должны быть понятные примеры, а не только auto-generated API docs. Хороший пример — документация к
flutter_bloc. - Звезды и форки на GitHub: Показывают сообщественную поддержку.
3. Технические аспекты:
- Размер и зависимости (
flutter pub deps --style=compact): Для мобильных приложений важен итоговый размер APK/IPA. Избегаю пакетов, тянущих за собой множество тяжёлых транзитивных зависимостей. - Лицензия: Для коммерческих проектов подходят MIT, BSD, Apache 2.0. Избегаю GPL.
- Платформенная поддержка: Если проект кроссплатформенный, проверяю поддержку iOS, Android, Web, Desktop.
Пример из практики:
Для управления состоянием в новом проекте выбирал между riverpod и bloc. Изучил оба: riverpod более гибкий и тестируемый, но bloc имеет чёткую событийно-ориентированную архитектуру, которая лучше подошла под требования проекта и опыт команды. Выбрали bloc.
Ответ 18+ 🔞
Блин, вот сидишь такой, выбираешь пакет на pub.dev, а там их, ёпта, овердохуища. И каждый раз голова болит: а не притащишь ли ты в проект какую-нибудь манду с ушами, которая через полгода накроется медным тазом?
Мой главный принцип — доверия ебать ноль. Начинаю всегда с одного вопроса: «А оно нам точно надо?». Если задача простая, типа дату отформатировать, лучше свою утилитку на коленке написать, чем тащить целую библиотеку. Ну а если уж без зависимости никуда, тогда включаю режим параноика и проверяю по пунктам.
1. Жив ли зверь? (Это самое главное!)
- Когда последний раз обновлялся? Лезу в коммиты на GitHub. Если последний коммит был полгода назад — это пидарас шерстяной, а не пакет. Особенно сейчас, когда Flutter и Dart обновляются как сумасшедшие.
- Поддерживает ли он всё актуальное? Null-safety, последнюю стабилку Flutter — это must have. Если нет — шёл бы ты нахуй, старьё.
- Что в issues? Открываю баг-трекер. Если там висят критические баги по году, а мейнтейнеры молчат как рыбы — это распиздяй, а не разработчик. Сразу видно, терпения ноль ебать у этих ребят.
2. Качество и народная любовь.
- Pub.dev Score: Смотрю, конечно, но не молюсь на него. Вот
dio, у него лайков хуй с горы, и это стандарт де-факто для сети. А бывает пакет с высоким счётом, но документация — чих-пых тебя в сраку, одна автогенерация. - Документация — это всё. Мне нужны живые примеры, а не сухой апишник. Как у
flutter_bloc— зайди, прочитай, сразу понятно. - Звёзды на GitHub: Показывают, что народ пользуется. Мало звёзд — подозрение ебать чувствую.
3. Технические приколюхи.
- Размер, блин! Запускаю
flutter pub deps --style=compactи смотрю, какую паровозную сцепку этот пакет за собой тянет. Если для кнопки качает пол-интернета — это пиздопроебибна идея для мобильного приложения. - Лицензия: В коммерции — только MIT/BSD/Apache. Увидел GPL — беги, гомосеки налетели.
- Под все платформы? Если пишу кроссплатформенно, а пакет только под андроид — какого хуя я его тогда беру?
Пример из жизни, чувак:
Недавно выбирал стейт-менеджер: riverpod или bloc. Удивление пиздец — оба классные, но разные. Riverpod — гибкий как черт, тесты писать одно удовольствие. А bloc — это такой хуй в пальто, чёткая, событийная архитектура, которая нашим ребятам в команде больше зашла. Посидели, подумали, э бошка думай... В итоге взяли bloc, потому что он лучше лёг на требования проекта. Вот так, без фанатизма.