Reputation: 871
I tried to use null safety, but it's giving me this error:
This requires the 'non-nullable' language feature to be enabled. Try updating your pubspec.yaml to set the minimum SDK constraint to 2.10.0 or higher, and running 'pub get'.
I changed my Dart SDK constraint from 2.7.0
to 2.10.0
, but it's still showing this error.
Also, I upgraded my Dart and Flutter SDK:
dart-sdk v2.10.2 is the latest version available based on your source(s).
Flutter (Channel stable, 1.22.3, ...
Upvotes: 60
Views: 111047
Reputation: 34270
To Enable null safety,
Check Latest Dart Version(It should be Dart 2.12 or later:)
dart --version
Update the dart version, the above point not satisfied using the command.
dart pub upgrade --null-safety
dart pub get
Run the below command to know what are libs in your project needs to be upgraded to the latest null safety.
dart pub outdated --mode=null-safety
The latest column shows the current version if it's in green that means dependency implemented null safety features if it red then the dependency owner needs to implement that.
Finally, run dart migration command which performs null safety migration on existing project(Existing project)
dart migrate
If your package is ready to migrate, then the tool produces a line like the following:
View the migration suggestions by visiting:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D
Note: Even after running upgrade --null-safety
command, you see the latest column section in red, which means a particular dependency hasn't supported null safety yet, so that means you cannot migrate the project.
for detail read: https://dart.dev/null-safety/migration-guide
Upvotes: 52
Reputation: 11
I confirm that evenIn 2022 it still works doing this...
Environment: SDK: ">=2.12.0 <3.0.0"
Upvotes: 0
Reputation: 28996
Set the lower Dart SDK constraint to 2.12
in your pubspec.yaml
file.
environment:
sdk: ">=2.12.0 <3.0.0"
Check if all the packages of your app are migrated to null safety.
dart pub outdated --mode=null-safety
If they are migrated, update all the packages to their null safe variant.
dart pub upgrade --null-safety
dart pub get
Start the migration process.
dart migrate
If you're happy with the changes, apply them using:
dart migrate --apply-changes
Upvotes: 3
Reputation: 791
After Flutter 2.0.0 Stable u can run in app root folder:
dart migrate --apply-changes
Upvotes: 10
Reputation: 126974
Null safety is no longer an experiment as of Dart 2.12
. It is now easy to enable.
Starting with the first Dart 2.12
versions, types will be non-nullable by default. So you just need to change your SDK constraint:
environment:
sdk: ">=2.12.0 <3.0.0"
Learn more about "Enabling null safety" on dart.dev.
Upvotes: 74
Reputation: 1134
I had done all the above and yet for some reason the analyzer still gave an error about enabling null safety. What fixed it for me was running pub upgrade instead of pub get. I'm not even going to try to find out why, I'm just going to get back to work!
Upvotes: 2
Reputation: 14445
Following the Dart documentation I was able to enable null safety in Flutter with these steps:
First add analysis_options.yaml
:
analyzer:
enable-experiment:
- non-nullable
Then move to the dev channel and upgrade:
flutter channel dev
flutter upgrade
Change the sdk in pubspec.yaml
environment:
sdk: ">=2.11.0-213.0.dev <2.12.0"
Clean the project:
flutter clean
flutter pub get
Restart the IDE (VS Code in my case).
And then it was working fine.
Upvotes: 8
Reputation: 1589
This can happen when you upgrade the Flutter version you're using.
Try adding the following to the analysis_options.yml
analyzer:
- enable-experiment:
- non-nullable
Then, try cleaning and upgrading the project dependencies again.
To do that, you can use the following commands:
flutter clean
flutter packages pub upgrade
flutter pub run build_runner build
Finally, restart your IDE.
P.s. By the way, make sure that the sdk you're using is compatible with your Flutter version
Upvotes: 7