Short answer
Read the Because lines: they name the two packages and the shared package they need different versions of. Raise the one that is behind in pubspec.yaml (flutter pub outdated shows what each can move to), or loosen your own constraint on the shared package. If the message says the current Dart SDK version is too old for a package, run flutter upgrade or pick an older version of that package. Use dependency_overrides only as a short bridge.
Why the versions don’t fit, and the fix
01
Two packages need different versions of a shared one
“This is called a shared dependency. Now what happens when widgets wants to use collection 2.3.5 and templates wants collection 2.3.7? What if they don't agree on a version?” Dart, Package versioning
Package a needs intl ^0.19.0 and package b needs intl ^0.18.0, so no version is in both ranges. Upgrade the package that is behind, so both accept the same range. If it has no newer release, look for a fork or a replacement. The most common case is intl: flutter_localizations pins one exact version, so a package that wants another intl fails. Use the version Flutter pins (flutter pub add intl:any) and upgrade the other package.
02
Your pubspec holds a package on an old major version
“Gets the packages that dart pub outdated lists as resolvable, ignoring any upper-bound constraint in the pubspec.yaml file. Also updates pubspec.yaml with the new constraints.” Dart, dart pub upgrade
A constraint like http: ^0.13.0 keeps pub on 0.13.x, while a newer package you added needs 1.x. flutter pub upgrade --major-versions (dart pub in a plain Dart project) raises those constraints and rewrites pubspec.yaml. Commit first so you can undo it, then test the screens that use the upgraded packages.
flutter pub outdated flutter pub upgrade --major-versions03
A package needs a newer Dart SDK
A line like which requires SDK version >=3.5.0 <4.0.0 means your Flutter install ships an older Dart. Run flutter upgrade, or pin the package to its last version that supports your SDK. In CI, use the same Flutter version as your machine.
04
dependency_overrides as a stopgap
“You can use dependency_overrides to temporarily override all references to a dependency.” Dart, Package dependencies
Overriding the shared package makes pub use your version everywhere, even where a package says it isn’t compatible. Use it to unblock a build, then remove it once the packages catch up.
dependency_overrides: collection: ^1.18.0
Checked against the vendor’s docs on : Dart: Package versioning (shared dependencies); Dart: dart pub outdated; Dart: dart pub upgrade; Dart: Package dependencies (dependency_overrides).
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Flutter “requires a newer Kotlin Gradle plugin” · Flutter “Gradle task assembleDebug failed” · Flutter MissingPluginException · Flutter pod install failed