我正在尝试使用 rxDart 向后端发出一个简单的请求。但是我面临的问题是,当我收到诸如 404 之类的 http 错误时,不会调用 onError,但是,可以在 onData 中将其提取出来。
我对 RxJava + 改造有一点经验,它可以按预期工作,当有一个错误响应时,http 状态代码 onError 被调用并且可以适当地处理。
1.我做错了什么,或者是故意的行为?
Object sendProfileData() {
Stream<Response> stream = onboardingRepository.createUser(User(name: 'name', surname: 'surname', lat: 1.0, lng: 2.0));
stream.listen((response) {
print(response.statusCode);
setAttributes();
}, onError: (e) {
print(e);
});
}
OnboardingRepository.dart:
class OnboardingRepository {
Observable<Response> createUser(User user) {
return Observable.fromFuture(TMApi.createUser(user));
}
}
TMApi.dart:
class TMApi {
static Future<http.Response> createUser(User user) async {
String url = '$baseUrl/create_user';
return await http.post(url, body: json.encode(user.toJson()));
}
}
在视图中处理事件的最佳方式是什么?如果发生错误应该显示错误,否则应该打开一个新屏幕。sendProfileData() 方法将返回一个对象,基于我将在视图中执行操作,但这听起来不是一个非常优雅的解决方案......
欢迎任何关于架构的建议:)