0

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?

tooba
  • 551
  • 5
  • 22

1 Answers1

0

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)
tooba
  • 551
  • 5
  • 22