Flutter 颤振-SharedReferences调用未定义的方法getAll
我在玩弄Flatter和SharedReferences软件包。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
我已经建立了一个简单的项目,以了解如何使用此软件包,但当我午餐时,我得到了: 在通道上找不到方法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')