gpt4 book ai didi

dart - 从另一个方法中的方法获取当前结果

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

我正在尝试调用一个调用另一个方法的方法.. 并且根据该方法的结果我将继续我的方法.. 像这样:

void submit() async{
if (login) {
....
bool result = await Login("966" + phone, _data.code);
if (result) {
successpage();
} else {
.....
}

和登录:

bool Login(String phone, String SMScode) {
http.post(baseUrl + loginURL + "?phone=" + phone + "&smsVerificationCode="+ SMScode,
headers: {
'content-type': 'application/json'
}).then((response) {
final jsonResponse = json.decode(Utf8Codec().decode(response.bodyBytes));
print("LOGIN: " + jsonResponse.toString());
Map decoded = json.decode(response.body);
print(decoded['success']);
if (decoded['success']) {
globals.token = decoded['token'];
globals.login = true;
}else{
globals.login = false;
}
});
return globals.login;
}

但这不起作用,也没有给我我需要的最后一个 bool 的结果.. 如何解决这个问题?

最佳答案

您的程序中的异步处理不正确。基本上,您的 Login 函数无需等待 http post 即可返回。

以下更新应该有效。

Future<bool> Login(String phone, String SMScode) async {
final response = await http.post('$baseUrl$loginURL?phone=$phone&smsVerificationCode=$SMScode',
headers: {'content-type': 'application/json'});
final jsonResponse = json.decode(Utf8Codec().decode(response.bodyBytes));
print("LOGIN: " + jsonResponse.toString());
Map decoded = json.decode(response.body);
print(decoded['success']);
if (decoded['success']) {
globals.token = decoded['token'];
globals.login = true;
} else {
globals.login = false;
}
return globals.login;
}

关于dart - 从另一个方法中的方法获取当前结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53701398/

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