【发布时间】:2021-02-25 00:05:09
【问题描述】:
Future<LoginResponse> authenticate(LoginRequest request) async {
var url = _baseUrl + loginUrl;
Map<String, String> headers = {'Content-Type': 'application/json;'};
final res = await http.post(url, headers: headers, body: request.toJson());
if (res.statusCode == 201) {
Map<String, dynamic> response = jsonDecode(res.body);
var json = LoginResponse(res.statusCode,
response: response, token: response['user_access_token']['key']);
return json;
} else {
Map<String, dynamic> response = jsonDecode(res.body);
var json =
LoginResponse(res.statusCode, response: response, error: res.body);
return json;
}
}
这是我在 UserRepository 中的代码,我正在使用 flutter_bloc 传入请求模型。
下面是 AuthBloc 中的逻辑。我很确定问题出在http.post 方法中,因为当我删除标头时,我的请求已被处理但响应错误。
Stream<AuthState> _mapLoginToState(String email, String password) async* {
yield AuthenticationLoadingState();
LoginRequest request =
LoginRequest(email: email, password: password);
var res = await userRepository.authenticate(request);
if (res.code == 201) {
var token = res.token;
if (token != '' && token != null) {
await userRepository.saveToken(token);
yield AuthenticatedState();
} else {
await userRepository.deleteToken();
yield UnAuthenticatedState();
}
} else {
print(res.error);
}
}
【问题讨论】:
标签: flutter http flutter-bloc