Flutter поддерживает использование общих пакетов, предоставленных другими разработчиками для экосистем Flutter и Dart. Это позволяет быстро создать приложение без необходимости разрабатывать все с нуля.
Существующие пакеты включают множество вариантов использования, например, создание сетевых запросов (http), настраиваемая навигация / обработка маршрутов (fluro), интеграция с API-интерфейсами устройств (url_launcher и батарея) и использование SDK сторонних платформ, таких как Firebase (FlutterFire).
Чтобы разработать новый пакет, см. Разработку пакетов. Чтобы добавить ресурсы, изображения или шрифты, х��анящиеся в файлах или пакетах, см. Добавление ресурсов и изображений.
Использование пакетов
В следующем разделе описано, как использовать существующие опубликованные пакеты.
Поиск пакетов
Пакеты публикуются на сайте Pub.
На целевой странице Flutter на сайте Pub отображаются основные пакеты, совместимые с Flutter (те, которые объявляют зависимости, обычно совместимые с Flutter), и поддерживается поиск среди всех опубликованных пакетов.
Добавление зависимости пакета в приложение
Чтобы добавить пакет css_colors в приложение:
- Указываем на новую зависимость:
- Открываем файл pubspec.yaml, расположенный в папке приложения, и добавляем css_colors: в зависимости, указав его в виде значения свойству dependencies.
- Устанавливаем его:
- Из терминала набираем команду flutter pub get.
- Или, из панели Android Studio/IntelliJ: жмем Packages get в списке действий в верхней части файла pubspec.yaml.
- Или, из панели VS Code: жмем Get Packages расположен в правой части списка действий в верхней части pubspec.yaml.
- Импортируем пакет:
- Добавляем соответствующий оператор импорта import в коде Dart.
- Останавливаем и перезапускаем приложение, если это необходимо
- Если пакет содержит специфичный для платформы код (Java / Kotlin для Android, Swift / Objective-C для iOS), этот код должен быть встроен в ваше приложение. Горячая перезагрузка и горячий перезапуск обновляют только код Dart, поэтому может потребоваться полный перезапуск приложения, чтобы избежать ошибок, таких как MissingPluginException при использовании пакета.
Вкладка «Установка», доступная на любой странице пакета в Pub, является удобным справочником для этих шагов.
Для полного примера см. Пример css_colors ниже.
Решение конфликта
Предположим, вы хотите использовать в приложении some_package и another_package, и оба они зависят от url_launcher, но в разных версиях. Это вызывает потенциальный конфликт. Лучший способ избежать этого — для авторов пакетов использовать диапазоны версий, а не конкретные версии при указании зависимостей.
dependencies: url_launcher: ^0.4.2 # Хорошо, любая 0.4.x версия, где x >= 2 работает. image_picker: '0.1.1' # Это не хорошо, работает только версия 0.1.1.
Если some_package объявляет вышеуказанные зависимости, а another_package объявляет совместимую зависимость url_launcher, такую как «0.4.5» или ^0.4.0, то Pub автоматически решает проблему. Зависимости от платформы для модулей Gradle и/или CocoaPods решаются аналогичным образом.