我正在尝试使用节点登录我的RESTAPI。js。但它给了我一个错误的说法:
[错误:flatter/lib/ui/ui\u dart\u state.cc(186)]未处理的异常:类型'\u InternalLinkedHashMap
我使用提供者作为我的状态管理解决方案。注册用户进展顺利,但登录功能有问题。
class AuthProvider extends ChangeNotifier {
Status _status = Status.Uninitialized;
String _token;
NotificationText _notification;
Dio dio = Dio();
Status get status => _status;
String get token => _token;
final String api = "https://gentle-thicket-78744.herokuapp.com/api/auth/";
initAuthProvider() async {
getToken().then((value) {
String token = value;
if (token != null) {
_token = token;
_status = Status.Authenticated;
} else {
_status = Status.Unauthenticated;
}
notifyListeners();
});
}
//Login user
Future<bool> login(var email, var password) async {
_status = Status.Authenticating;
_notification = null;
notifyListeners();
final url = "$api/login";
var body = {
'email': email,
'password': password,
};
final response = await dio.post(url, data: body);
print(response.statusCode);
if (response.statusCode == 200) {
print("Hello");
var apiResponse = json.decode(response.data);
print(apiResponse);
print("SEcond");
_status = Status.Authenticated;
_token = apiResponse['token'];
await storeUserData(apiResponse);
notifyListeners();
return true;
}
if (response.statusCode == 401 || response.statusCode == 400) {
_status = Status.Unauthenticated;
// Alert dialog
_notification = NotificationText('Invalid email or password.');
notifyListeners();
return false;
}
_status = Status.Unauthenticated;
_notification = NotificationText('Server error.');
notifyListeners();
return false;
}
Future<Map> register(String name, int budget, String currency, String email,
String password, String confirmPassword) async {
final url = "$api/register";
Map<String, dynamic> body = {
'name': name,
'budget': budget,
'currency': currency,
'email': email,
'password': password,
'confirmPassword': confirmPassword,
};
Map<String, dynamic> result = {
"success": false,
"message": 'Unknown error.'
};
final response = await dio.post(
url,
data: body,
);
if (response.statusCode == 201) {
notifyListeners();
result['success'] = true;
return result;
}
Map apiResponse = json.decode(response.data);
if (response.statusCode == 422) {
if (apiResponse['errors'].containsKey('email')) {
result['message'] = apiResponse['errors']['email'][0];
return result;
}
if (apiResponse['errors'].containsKey('password')) {
result['message'] = apiResponse['errors']['password'][0];
return result;
}
return result;
}
return result;
}
storeUserData(apiResponse) async {
SharedPreferences storage = await SharedPreferences.getInstance();
await storage.setString('token', apiResponse['token']);
await storage.setString('name', apiResponse['name']);
}
Future<String> getToken() async {
SharedPreferences storage = await SharedPreferences.getInstance();
String token = storage.getString('token');
return token;
}
我已经尝试了多种方法来解决这个问题,但运气不好,请帮忙。
dio
返回响应。数据
已作为地图,因此:
Map apiResponse = response.data; // instead of: var apiResponse = json.decode(response.data);
如果flatter中存在列表,是否会处理列表映射? 在上面的类中,我们需要手动将json转换为电影列表吗?
在存储到本地数据库之前,将字符串转换为对象的正确方法是什么? 这是的输出: 我试图将其转换为CreatedBy对象 创造的 这里是我的本地表列 错误
我正在尝试开发一个消息传递应用程序,它总是抛出一个异常 类型_InternalLinkedHashMap 当我试图给信息的背景颜色。它还表明 renderflex溢出99335像素 在列表中而不是列表中使用MessageBubble时。
我是颤振初学者。我得到这样的JSON响应时出错。 我一直在论坛上寻找这个问题,我发现是这样的。 但我不懂如何编写函数。这是我的密码。 还有像这样的错误。 我很抱歉问了同样的问题,因为我不明白
我有点被某些情况困住了。 1)
我试图将build_value和json_serializable结合起来,解析从服务器到模型类的json响应。 以下是依赖项: 下面是我编写的代码 序列化器类代码: 以下是我从服务器得到的响应。 最后,我尝试使用以下代码行进行解析 但是我得到以下错误 请说明可能导致此问题的原因。