Dependency conflicts are among the most common issues encountered during Flutter development. As projects evolve and packages are updated, developers may encounter version resolution errors that prevent applications from building successfully.
A frequent example occurs when a Flutter project uses a specific version of the Flutter SDK while attempting to install packages that require newer versions of Dart or core dependencies such as meta.
This guide explains how Flutter dependency resolution works, why conflicts occur, and how to resolve issues involving Flutter SDK versions, Dart SDK versions, Riverpod, Riverpod Lint, and Flutter Localizations.
Understanding the Error
A typical error may look similar to:
Because every version of flutter_localizations from sdk depends on meta 1.11.0,
riverpod_lint >=2.6.4 depends on a newer version of meta.
So, because the project depends on both flutter_localizations and riverpod_lint,
version solving failed.
This message indicates that two packages require incompatible versions of the same dependency.
In this case:
- Flutter SDK provides
flutter_localizations - Flutter SDK internally locks a specific version of
meta riverpod_lintrequires a newer version ofmeta- Pub cannot find a version that satisfies both requirements
As a result, dependency resolution fails.
Checking Your Flutter and Dart Versions
Before troubleshooting package conflicts, determine which Flutter and Dart versions are currently installed.
Check Flutter Version
flutter --version
or, when using FVM:
fvm flutter --version
Example output:
Flutter 3.19.0
Dart 3.3.0
Check Dart Version
dart --version
Keep in mind that Flutter includes its own Dart SDK, which is usually the version that matters for Flutter projects.
Why Flutter SDK Versions Matter
Flutter ships with a predefined set of package versions, including:
- flutter_localizations
- meta
- intl
- collection
- analyzer
When a third-party package requires newer versions than those included with the installed Flutter SDK, version conflicts can occur.
For example:
| Component | Version |
|---|---|
| Flutter SDK | 3.19.0 |
| Dart SDK | 3.3.0 |
| Meta Package | 1.11.0 |
| Riverpod Lint | 2.6.4+ |
The newer Riverpod Lint package may require a newer Meta package than Flutter 3.19 provides.
Solution 1: Upgrade Flutter
The preferred solution is usually upgrading Flutter.
Using Flutter
flutter upgrade
Using FVM
fvm install stable
fvm use stable
After upgrading, verify the installation:
fvm flutter --version
Newer Flutter releases typically include:
- Updated Dart SDK
- Updated Meta package
- Improved package compatibility
- Better analyzer support
This often resolves dependency conflicts automatically.
Solution 2: Downgrade Riverpod Lint
If upgrading Flutter is not possible due to project constraints, consider using an older version of Riverpod Lint.
Example:
dev_dependencies:
riverpod_lint: ^2.4.0
Instead of:
dev_dependencies:
riverpod_lint: ^2.6.4
Older versions of Riverpod Lint may remain compatible with older Flutter SDK releases.
Checking Package Requirements
Review your pubspec.yaml file:
environment:
sdk: ">=3.3.0 <4.0.0"
If a dependency requires:
sdk: ">=3.4.0"
and your Dart version is:
3.3.0
dependency resolution will fail.
Always verify that:
- Flutter SDK version
- Dart SDK version
- Package requirements
are compatible.
Using Flutter Pub Commands
After modifying dependencies, clean and refresh the project:
flutter clean
flutter pub get
If using FVM:
fvm flutter clean
fvm flutter pub get
This forces Flutter to rebuild dependency information using the updated versions.
Recommended Compatibility Strategy
When maintaining Flutter applications, follow these guidelines:
Keep Flutter Updated
Using current stable releases minimizes compatibility issues.
Update Packages Gradually
Instead of updating every package simultaneously, upgrade incrementally and test frequently.
Use FVM
Flutter Version Management (FVM) allows multiple Flutter versions to coexist on the same machine.
Benefits include:
- Project-specific Flutter versions
- Easier upgrades
- Safer dependency management
- Simplified team collaboration
Monitor Package Changelogs
Before upgrading major dependencies such as:
- Riverpod
- Flutter Hooks
- Freezed
- Build Runner
- Go Router
review their release notes for SDK requirements.
Common Commands for Troubleshooting
Show Flutter Version
flutter --version
Show Dart Version
dart --version
Check Environment
flutter doctor -v
Upgrade Flutter
flutter upgrade
Refresh Packages
flutter pub get
Clean Build
flutter clean
List Dependency Tree
flutter pub deps
This command is particularly useful when identifying which package introduces an incompatible dependency.
Conclusion
Dependency conflicts involving Flutter SDK, Dart SDK, Riverpod, Riverpod Lint, and Flutter Localizations are typically caused by version mismatches between project dependencies and the versions bundled with the installed Flutter SDK.
The most reliable solution is upgrading Flutter to a newer stable release. When that is not possible, selecting package versions compatible with the existing Flutter and Dart environment can resolve the issue.
Understanding how Flutter manages its internal dependencies and regularly reviewing package requirements can significantly reduce build failures and improve project maintainability.


