Ответ
Зависимости в pubspec.yaml я использую для подключения внешних пакетов, которые решают общие или сложные задачи, чтобы не писать весь код с нуля. Это ускоряет разработку и повышает надежность.
Основные категории пакетов в моих проектах:
- Сетевое взаимодействие:
httpилиdioдля работы с REST API. - Управление состоянием:
riverpod,blocилиprovider. - Локализация и форматирование:
intl. - Работа с данными:
sqfliteдля локальной БД,shared_preferencesдля простого хранилища. - Утилиты:
cached_network_imageдля загрузки изображений,flutter_dotenvдля переменных окружения.
dev_dependencies я применяю для инструментов, нужных только в разработке: flutter_test для юнит-тестов, mockito для мокинг, flutter_lints для статического анализа.
Перед добавлением пакета я всегда оцениваю его поддержку, размер и лицензию.
Ответ 18+ 🔞
Ну, смотри, чтобы не изобретать велосипед каждый раз, я в pubspec.yaml тащу кучу готовых пакетов. Зачем городить своё, если какой-нибудь чувак уже всё за тебя сделал, оттестил и выложил на всеобщее обозрение? Это ж, ёпта, экономия времени — овердохуища.
Вот на что я обычно ведусь, как кот на сметану:
- Чтобы болтать с сервером: Беру
http— он простой, как три копейки. А если нужно чтото посерьёзнее, с кучей плюшек вроде перехватчиков, тоdio. Без этого в современном приложении — вообще никуда. - Чтобы состояние приложения не разъехалось по углам: Тут уже дело вкуса. Кто-то
riverpodхвалит, кто-то заblocгорой стоит, а кому-то и старенькийproviderзаходит. Главное — не устраивать там адский зоопарк. - Для дат, денег и прочей локализации:
intl. Ну, чтобы у француза дата выглядела по-французски, а не как у нас, с точками. И валюту правильно форматировал. Без него — манда с ушами получится. - Чтобы данные на телефоне жили: Если нужно что-то посложнее —
sqfliteв дело. Ну а для какой-нибудь мелкой настройки, типа «включил тёмную тему», хватаетshared_preferences. Проще пареной репы. - Разная полезная хрень: Картинки из интернета кэшировать?
cached_network_image. Секретные ключи от API прятать?flutter_dotenv. В общем, всё, что жизнь облегчает.
А вот dev_dependencies — это уже чисто для нашей, разработческой кухни. Туда всякие инструменты, которые в готовое приложение не попадут. Типа flutter_test для тестов (ну, должен же я хоть иногда проверять, не сломал ли я всё к хуям), mockito, чтобы эти тесты нормально писать, или flutter_lints, который мне мозг выносит, если я кривой код пишу. Очень полезно, хоть иногда и бесит.
Но просто так, с бухты-барахты, пакет в проект не пихаю. Сначала гляну: давно ли обновляли, не забросили ли, сколько скачиваний, какие отзывы. А то подцепишь какую-нибудь либу-однодневку, а она через месяц накрылась медным тазом, и ты останешься с проблемой в одном месте. Так что, чувак, доверия ебать ноль — всегда проверяй.