Flutter 颤振-SharedReferences调用未定义的方法getAll

Flutter 颤振-SharedReferences调用未定义的方法getAll,flutter,sharedpreferences,Flutter,Sharedpreferences,我在玩弄Flatter和SharedReferences软件包。 我已经建立了一个简单的项目,以了解如何使用此软件包,但当我午餐时,我得到了: 在通道上找不到方法getAll的实现 plugins.flatter.io/shared_首选项 不知道怎么了 这是我的存储库: import 'package:dio/dio.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class Authe

我在玩弄Flatter和SharedReferences软件包。
我已经建立了一个简单的项目,以了解如何使用此软件包,但当我午餐时,我得到了:

在通道上找不到方法getAll的实现 plugins.flatter.io/shared_首选项

不知道怎么了

这是我的存储库:

import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';

abstract class AuthenticationRepository {
  Future<User> getCurrentUser();
  Future<User> signInWithEmailAndPassword(String email, String password);
  Future<void> signOut();
}

class RestAuthenticationProvider extends AuthenticationRepository {
  Future<SharedPreferences> _prefs = SharedPreferences.getInstance();

  var httpClient = new Dio();

  @override
  Future<User> getCurrentUser() async {
    String token = await this.getToken();
    if (null == token) {
      return null;
    }

    final SharedPreferences prefs = await _prefs;

    return User(
      name: prefs.getString('user_name') ?? '',
      email: prefs.getString('user_email') ?? '',
    );
  }

  Future<String> getToken() async {
    final SharedPreferences prefs = await _prefs;
    String token = prefs.getString('user_token') ?? null;
    return token;
  }

  @override
  Future<User> signInWithEmailAndPassword(String email, String password) async {
    Response response = await httpClient.post(
      kIssueTokenUrl,
      data: {
        "email": email,
        "password": password,
        "device_name": 'Mobile app',
      },
    );

    if (response.statusCode != 200) {
      throw AuthenticationException(
        message: 'Nome utente o password sbagliati.',
      );
    }

    String token = response.data.toString();

    httpClient.options.headers['content-Type'] = 'application/json';
    httpClient.options.headers['Authorization'] = 'Bearer $token';
    Response userInfoResponse = await httpClient.get(kGetUserInfoUrl);

    if (userInfoResponse.statusCode != 200) {
      throw AuthenticationException(
        message: 'Nome utente o password sbagliati.',
      );
    }

    String userName = userInfoResponse.data['name'];
    String userEmail = userInfoResponse.data['email'];

    final SharedPreferences prefs = await _prefs;
    prefs.setString('user_token', token);
    prefs.setString('user_name', userName);
    prefs.setString('user_email', userEmail);

    return User(
      name: userName,
      email: userEmail,
    );
  }

  @override
  Future<void> signOut() async {
    final SharedPreferences prefs = await _prefs;
    prefs.remove('token');
    prefs.remove('user_name');
    prefs.remove('user_email');
    return null;
  }
}
我只使用了
getString
setString
remove
,无法理解为什么要调用getAll,结果失败了

编辑:


确保您使用的是最新版本(0.5.12+2),运行
flatter clean
,然后运行
flatter pub get
。如果您使用的是iOS,请同时运行
pod安装。您也可以尝试从手机中删除应用程序


如果错误仍然存在,请添加
SharedReferences.setMockInitialValues({})到您的
main()

确保您使用的是最新版本(0.5.12+2),运行
flatter clean
,然后运行
flatter pub get
。如果您使用的是iOS,请同时运行
pod安装。您也可以尝试从手机中删除应用程序


如果错误仍然存在,请添加
SharedReferences.setMockInitialValues({})
到您的
main()

我已经按照您的指示进行了操作,但是现在我在控制台中遇到了一个新错误,我编辑了我的问题,因为它对于注释来说太长了尝试从project.xcodeproj而不是project.xcworkspace打开Xcode项目我已经删除了
ios/Podfile
,并再次运行了构建,现在它似乎正在编译很高兴听到它:)我已经按照您的指示,但是现在我在控制台中遇到了一个新的错误,我编辑了我的问题,因为它对于注释来说太长了尝试从project.xcodeproj而不是project.xcworkspace打开Xcode项目我已经删除了
ios/Podfile
,并再次运行了构建,现在它似乎正在编译很高兴听到它:)
import 'package:meta/meta.dart';

class User {
  final String name;
  final String email;

  User({
    @required this.name,
    @required this.email,
  });

  @override
  String toString() => 'User { name: $name, email: $email}';
}
Launching lib/main.dart on iPhone 11 Pro in debug mode...
Running pod install...
Running Xcode build...
Xcode build done.                                           19,3s
Failed to build iOS app
Could not build the application for the simulator.
Error launching application on iPhone 11 Pro.
Error output from Xcode build:
↳
** BUILD FAILED **


Xcode's output:
↳
/Users/christiangiupponi/Dev/FlutterApp/test/ios/Runner/GeneratedPluginRegistrant.m:10:9: fatal error: module 'shared_preferences' not found
@import shared_preferences;
 ~~~~~~~^~~~~~~~~~~~~~~~~~
1 error generated.
note: Using new build system
note: Planning build
note: Constructing build description
warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the Runner editor. (in target 'Runner' from project 'Runner')