Package Management
Dependencies
Manage dependencies between your private and public packages.
Dependency Types
1. Regular Dependencies
Runtime dependencies:
dependencies:
flutter:
sdk: flutter
# Private package
company_core:
hosted:
name: company_core
url: https://registry.yourcompany.com
version: ^1.0.0
# Public package
http: ^1.1.02. Dev Dependencies
Development and testing only:
dev_dependencies:
flutter_test:
sdk: flutter
mockito: ^5.4.0
build_runner: ^2.4.03. Dependency Overrides
Force specific versions:
dependency_overrides:
http: 1.1.0 # Force exact versionPrivate Package Dependencies
When your private package depends on another private package:
# company_ui/pubspec.yaml
dependencies:
company_core: # Another private package
hosted:
name: company_core
url: https://registry.yourcompany.com
version: ^1.0.0Transitive Dependencies
Users of your package automatically get your dependencies:
my_app
└─ company_ui (^1.0.0)
└─ company_core (^1.0.0) # TransitiveVersion Resolution
# See dependency tree
flutter pub deps
# Check for conflicts
flutter pub outdatedBest Practices
- Minimize dependencies - Only add what you need
- Use version constraints - Allow flexibility with
^ - Document private dependencies - Help team members
- Test dependency updates - Before upgrading
- Avoid circular dependencies - Keep packages independent
Next Steps
- Visibility - Control package access
- Pubspec Configuration - Advanced config