gpt4 book ai didi

Dart - 如何对不同主体的多个 http.post 请求

转载 作者:IT王子 更新时间:2023-10-29 06:53:39 24 4
gpt4 key购买 nike

我找到了这个:Optimal way to make multiple independent requests to server in Dart

但我的问题有点不同。

我想用不同的主体发布多个帖子,但我得到相同的结果,这与类型列表的最后一个元素有关。

final List<String> types = ['completed', 'approval', 'process', 'available'];

想想这个列表,我总是得到“完成”类型的结果。

Future<List<dynamic>> fetchAllRequests() async {
int i = 0;
userInfo['type'] = types.first;
return Future.wait(
types.map(
(t) => client.post(Api.requests, body: userInfo).then(
(response) {
if (i < types.length - 1) {
userInfo['type'] = types[++i];
}
Map<String, dynamic> m = jsonDecode(response.body);
dataItemsLists.add(m['DataItems']);
print('${m['DataItems']}');
},
),
),
);
}

此外,我想在 map() 中操纵 body 的乐趣,但这不起作用:

types.map((t){client.post)(Api.requests, body: userInfo).then()...}

错误日志:

NoSuchMethodError: The method 'then' was called on null.
Receiver: null
Tried calling: then<dynamic>(Closure: (dynamic) => Null, onError:
Closure: (dynamic, StackTrace) => Null)

虽然这是有效的:

types.map((t) => client.post)(Api.requests, body: userInfo).then()...

所以我在上面的第一个代码块中以详细模式操作主体,而不是像这样:

Future<List<dynamic>> fetchAllRequests() async {
return Future.wait(
types.map((String t) {
userInfo['type'] = t;
client.post(Api.requests, body: userInfo).then(
(response) {
Map<String, dynamic> m = jsonDecode(response.body);
dataItemsLists.add(m['DataItems']);
print('${m['DataItems']}');
},
);
}),
);
}

最佳答案

如果您使用 {} 而不是 =>,那么您需要明确地return

这里 .map(...) 的结果是 null 因为什么都没有返回

types.map((t){client.post)(Api.requests, body: userInfo).then()...}

要么使用

types.map((t) => client.post)(Api.requests, body: userInfo).then()...;

types.map((t){return client.post)(Api.requests, body: userInfo).then()...}

与你上一个代码块类似

  client.post(Api.requests, body: userInfo).then(

应该是

  return client.post(Api.requests, body: userInfo).then(

关于Dart - 如何对不同主体的多个 http.post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55116371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com