我正在尝试使用Dio flutter软件包进行一些响应处理
我具有以下功能
Future<Map<String, dynamic>> forgotPassword(Map body) => client.dio
.post('/user/forgotpassword', data: body)
.then(
(response) => {
print('POST /user/forgotpassword $response'),
response.data as Map<String, dynamic>
},
onError: (error) => {
throw error
})
.catchError((error) => client.handleRequestError(error));
我希望它返回一个Future<Map<String, dynamic>>
,它是在response.data as Map<String, dynamic>
上指定的,但是我从编译器中收到了一个dart(return_of_invalid_type)
错误。
A value of type 'Future<Set<void>> can't be returned from method 'forgotPassword' because it has a return type of 'Future<Map<String, dynamic>>'.
将Future的值映射到Map(或其他任何类)的正确方法是什么?
答案 0 :(得分:0)
在.then
的回调中,您有一些奇怪的语法。如果您放弃=>
表示法,则说明一切正常:
Future<Map<String, dynamic>> forgotPassword(Map body) => client.dio
.post('/user/forgotpassword', data: body)
.then(
(response) {
print('POST /user/forgotpassword $response'),
response.data as Map<String, dynamic>
},
onError: (error) => {
throw error
})
.catchError((error) => client.handleRequestError(error));
仅对单行语句使用=>
,因为它返回语句的结果。您看到Future<Set<void>>
的返回类型的原因是因为您通过执行Set
(response) => { /* this is treated as a Set */ }