Для чего используешь зависимости (dependencies) в Flutter?

Ответ

Зависимости в pubspec.yaml я использую для подключения внешних пакетов, которые решают общие или сложные задачи, чтобы не писать весь код с нуля. Это ускоряет разработку и повышает надежность.

Основные категории пакетов в моих проектах:

  1. Сетевое взаимодействие: http или dio для работы с REST API.
  2. Управление состоянием: riverpod, bloc или provider.
  3. Локализация и форматирование: intl.
  4. Работа с данными: sqflite для локальной БД, shared_preferences для простого хранилища.
  5. Утилиты: cached_network_image для загрузки изображений, flutter_dotenv для переменных окружения.

dev_dependencies я применяю для инструментов, нужных только в разработке: flutter_test для юнит-тестов, mockito для мокинг, flutter_lints для статического анализа.

Перед добавлением пакета я всегда оцениваю его поддержку, размер и лицензию.

Ответ 18+ 🔞

Ну, смотри, чтобы не изобретать велосипед каждый раз, я в pubspec.yaml тащу кучу готовых пакетов. Зачем городить своё, если какой-нибудь чувак уже всё за тебя сделал, оттестил и выложил на всеобщее обозрение? Это ж, ёпта, экономия времени — овердохуища.

Вот на что я обычно ведусь, как кот на сметану:

  1. Чтобы болтать с сервером: Беру http — он простой, как три копейки. А если нужно чтото посерьёзнее, с кучей плюшек вроде перехватчиков, то dio. Без этого в современном приложении — вообще никуда.
  2. Чтобы состояние приложения не разъехалось по углам: Тут уже дело вкуса. Кто-то riverpod хвалит, кто-то за bloc горой стоит, а кому-то и старенький provider заходит. Главное — не устраивать там адский зоопарк.
  3. Для дат, денег и прочей локализации: intl. Ну, чтобы у француза дата выглядела по-французски, а не как у нас, с точками. И валюту правильно форматировал. Без него — манда с ушами получится.
  4. Чтобы данные на телефоне жили: Если нужно что-то посложнее — sqflite в дело. Ну а для какой-нибудь мелкой настройки, типа «включил тёмную тему», хватает shared_preferences. Проще пареной репы.
  5. Разная полезная хрень: Картинки из интернета кэшировать? cached_network_image. Секретные ключи от API прятать? flutter_dotenv. В общем, всё, что жизнь облегчает.

А вот dev_dependencies — это уже чисто для нашей, разработческой кухни. Туда всякие инструменты, которые в готовое приложение не попадут. Типа flutter_test для тестов (ну, должен же я хоть иногда проверять, не сломал ли я всё к хуям), mockito, чтобы эти тесты нормально писать, или flutter_lints, который мне мозг выносит, если я кривой код пишу. Очень полезно, хоть иногда и бесит.

Но просто так, с бухты-барахты, пакет в проект не пихаю. Сначала гляну: давно ли обновляли, не забросили ли, сколько скачиваний, какие отзывы. А то подцепишь какую-нибудь либу-однодневку, а она через месяц накрылась медным тазом, и ты останешься с проблемой в одном месте. Так что, чувак, доверия ебать ноль — всегда проверяй.