Why does Flutter shared_preferences download an older version without null safety? - flutter

I'm trying to add shared_preferences to a Flutter project. By default, version 0.5.7+3 is downloaded which isn't null safe.
Adding the latest version, 2.0.15, gets the following error:
Running "flutter pub get" in platform...
Because shared_preferences >=2.0.10 depends on shared_preferences_windows ^2.0.1 which depends on path_provider_platform_interface ^2.0.0, shared_preferences >=2.0.10 requires path_provider_platform_interface ^2.0.0.
And because path_provider_platform_interface >=2.0.0 depends on platform ^3.0.0, shared_preferences >=2.0.10 requires platform ^3.0.0.
So, because platform depends on shared_preferences ^2.0.15 and platform is 1.0.0+1, version solving failed.
pub get failed (1; So, because platform depends on shared_preferences ^2.0.15 and platform is 1.0.0+1, version solving failed.)
exit code 1
The platform version is actually the version number in the pubspec.yaml. Changing the version number to 3.0.0 downloads 2.0.15 of shared_preferences but then fails on running:
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
lib/main.dart:1
Building with Flutter multidex support enabled.
: Error: Error when reading 'lib/platform.dart': No such file or directory
../…/src/method_channel_path_provider.dart:7
import 'package:platform/platform.dart';
^
: Error: Error when reading 'lib/platform.dart': No such file or directory
../…/interface/common.dart:8
import 'package:platform/platform.dart';
pubspec.yaml is:
name: platform
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: '>=2.7.0 <3.3.3'
dependencies:
flutter:
sdk: flutter
firebase_core:
firebase_auth:
google_sign_in:
firebase_analytics:
font_awesome_flutter:
provider:
shared_preferences:
config:
path: config
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
assets:
- assets/images/
uses-material-design: true
How can I add a null safe version of shared_preferences to my project?
Why is the pubspec.yaml version number being read as platform version?

The problem turned out to be the platform name in the pubspec.yaml.
This pubspec.yaml
name: platform
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: '>=2.18.2 <3.0.0'
dependencies:
shared_preferences:
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
resolves to version 0.5.7+3 of shared_preferences:
Package Name Current Upgradable Resolvable Latest
direct dependencies:
shared_preferences *0.5.7+3 *0.5.7+3 *0.5.7+3 2.0.15
Changing the pubspec.yaml name field to something different:
name: notplatform
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: '>=2.18.2 <3.0.0'
dependencies:
shared_preferences:
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
means shared_preferences is updated when flutter pub upgrade is run
shared_preferences 2.0.15 (was 0.5.7+3)

Related

every version of flutter_test from sdk depends on test_api 0.4.8, mockito >=4.1.2 <=5.0.0-nullsafety.7 is incompatible with flutter_test from sdk

pubspec.yaml:
name: my_chat_app
description: A new Flutter application.
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
chat:
path: ./chat
sqflite: ^2.0.0+3
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
mockito: ^4.1.4
flutter_lints: ^1.0.0
# The following section is specific to Flutter.
flutter:
chat/pubspec.yaml:
name: chat
description: A new Flutter package project.
environment:
sdk: ">=2.16.1 <3.0.0"
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
rethinkdb_dart: ^2.3.2+6
encrypt: ^4.0.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
flutter:
flutter pub get output in pubspec.yaml:
Running "flutter pub get" in my_chat_app...
Because mockito >=4.1.2 <=5.0.0-nullsafety.7 depends on test_api ^0.2.19-nullsafety and every version of flutter_test from sdk depends on test_api 0.4.8, mockito >=4.1.2 <=5.0.0-nullsafety.7 is incompatible with flutter_test from sdk.
So, because my_chat_app depends on both flutter_test from sdk and mockito ^4.1.4, version solving failed.
pub get failed (1; So, because my_chat_app depends on both flutter_test from sdk and mockito ^4.1.4, version solving failed.)
Process finished with exit code 1

How do i upgrade my current flutter project to its latest dependencies packages and latest version of flutter?

I have cloned an old flutter project and need to update it's dependencies and version of flutter. What are the steps needed to do this correctly from what i have gathered in the terminal i would run in this order the following commands:
flutter upgrade
dart migrate
flutter pub upgrade --major-versions
dart migrate
i will include my pubspec.yaml:
pubspec.yaml
name: vtc_sentry_fl
description: A new Flutter project.
version: 0.2.1+5
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^0.1.3
http: ^0.12.1
shared_preferences: ^0.5.7+3
flag: ^1.0.0
auto_size_text: ^2.1.0
firebase_messaging: ^6.0.15
date_range_picker: ^1.0.6
intl: ^0.16.0
flutter_launcher_icons: ^0.7.4
fl_chart: ^0.9.4
flutter_icons:
android: true
ios: true
image_path: "assets/images/vt_icon_logo.png"
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
fonts:
- family: Montserrat
fonts:
- asset: assets/fonts/Montserrat-Medium.ttf
- asset: assets/fonts/Montserrat-Light.ttf
- asset: assets/fonts/Montserrat-Bold.ttf
assets:
- assets/images/
To upgrade Flutter run flutter upgrade and adjust the SDK version as mentioned by Kartik Patel.
However, in order to upgrade the project's dependencies you have to be careful. I suggest you check out the website of each dependency on pub.dev and read the change logs. Newer versions might introduce breaking changes.
You can run flutter pub outdated to list outdated packages and even show their transitive dependencies, you can then update the version of the packages in pubspec.yaml and run flutter pub upgrade to perform the upgrade.
run flutter upgrade command to update flutter and flutter pub upgrade to update all dependencies from pubspec.yaml file, and use latest sdk version in pubspec.yaml file:
environment:
sdk: ">=2.12.0 <3.0.0"

Flutter path_provider and sdk version mismatch

The current Dart SDK version is 2.10.5.
Because path_provider 2.0.1 requires SDK version >=2.12.0-259.9.beta <3.0.0 and no versions of path_provider match >2.0.1 <3.0.0, path_provider ^2.0.1 is forbidden.
So, because harmonoid depends on path_provider ^2.0.1, version solving failed.
pub get failed (1; So, because harmonoid depends on path_provider ^2.0.1, version solving failed.)
How do i solved this error? this is my pubspec.yaml
version: 1.0.0+1
environment:
sdk: ">=2.8.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
animations: ^1.1.2
provider: ^4.3.3
assets_audio_player:
git: https://github.com/alexmercerind/Flutter-AssetsAudioPlayer
media_metadata_retriever: ^0.0.2+1
http: ^0.12.2
path: ^1.7.0
path_provider: ^2.0.1
flutter_local_notifications: ^3.0.3
url_launcher: ^5.5.0
permission_handler: ^5.0.1+1
share: ^0.6.5+4
palette_generator: ^0.2.3
implicitly_animated_reorderable_list: ^0.3.2
dev_dependencies:
flutter_test:
sdk: flutter
error
My Dart SDK version is 2.12.0, and the Flutter version is 2.0.1. I created a new project and copied all your dependencies. The project worked without any problems.
For saving your time, I recommend upgrading to the stable channel and Flutter 2 using these commands or this link.
flutter channel stable
flutter upgrade
If you don't want to migrate your Flutter and Dard SDK versions yet,
I would recommend you to try and remove the version from the line:
path_provider: ^2.0.1
so it would look like this: path_provider:
run: pub get again
run your project again
Eventually I would recomment to migrate to the newest version of the SDKs and upgrade all your dependencies. This is just a temporary solution.

Dependency conflict

I am little bit confused. When I added easy_localization dependency and run flutter pub get then I give following message:
Because easy_localization >=2.1.0+1 <2.3.4-nullsafety depends on flutter_localizations
any from sdk which depends on path 1.8.0-nullsafety.1,
easy_localization >=2.1.0+1 <2.3.4-nullsafety requires path 1.8.0-nullsafety.1.
I switched to Stable channel of Flutter and I have following Dart version:
Flutter 1.22.6
Dart 2.10.5
Here is my fully pubspec file:
name: demo
description: demo
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: 1.0.0
flutter_bloc: 6.1.1
equatable: 1.2.5
easy_localization: 2.3.3+1
dependency_overrides:
intl: 0.16.1
flutter:
uses-material-design: true
assets:
- assets/translations/
I don't understand why I have dependency conflict. Also I tried remove .lock files. Do you have any ideas where is a problem? Thanks.
Its simple, Just remove dependency version like this
image_picker:
intl:
http: ^0.12.2
It will automatic choose version which is needed

Not able to install dependencies in my flutter project

I am trying to install image_picker and firbase_storage in my flutter project. But whatever version I try to install, it fails. and gives error like this -
Because image_picker >=0.3.0 requires Flutter SDK version >=0.1.4 <2.0.0 and image_picker <0.3.0 requires SDK version >=1.8.0 <2.0.0, image_picker is forbidden.
I have tried out installing every version but not able to install even a single version.
Flutter doctor -v is working fine and following is the content of my pubspec.yaml file
name: timepass
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
flutter_secure_storage: ^3.1.3
image_picker: ^0.1.4
firebase_storage: ^0.2.0
location: ^1.4.1
graphql_flutter: ^0.9.1
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
One way to approach this kind of dependency issues is that just let the pub to fetch the appropriate version if you are facing any issues or conflicts with dependency.
Add the dependency on pubspec.yaml as below
dependencies:
image_picker: any
or
dependencies:
image_picker:
Then check the pubspec.lock file and find the version number.
In this case, you may get
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.0"
Then you can modify pubspec.yaml as
dependencies:
image_picker: ^0.5.0
You need to allow a newer image_picker version.
Try
dependencies:
image_picker:
or
dependencies:
image_picker: ^0.5.0