Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 从另一个方法中的方法获取当前结果_Dart_Flutter - Fatal编程技术网

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

Dart 从另一个方法中的方法获取当前结果,dart,flutter,Dart,Flutter,我试图调用一个调用另一个方法的方法。。根据该方法的结果,我将继续使用我的方法。。大概是这样的: void submit() async{ if (login) { .... bool result = await Login("966" + phone, _data.code); if (result) { successpage(); } else { ..... } 和登录: bool Login(String phone, String SMScode

我试图调用一个调用另一个方法的方法。。根据该方法的结果,我将继续使用我的方法。。大概是这样的:

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;
}

但这不起作用,也不能给我我需要的最后一个布尔的结果。。如何解决此问题?

程序中的异步处理不正确。基本上,您的
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;
}
未来登录(字符串电话、字符串SMScode)异步{
最终响应=等待http.post(“$baseUrl$loginURL?phone=$phone&smsvericationcode=$SMScode”,
标题:{'content-type':'application/json'});
final jsonResponse=json.decode(Utf8Codec().decode(response.bodyBytes));
打印(“登录:+jsonResponse.toString());
Map decoded=json.decode(response.body);
打印(解码[成功]);
如果(已解码['success']){
globals.token=已解码['token'];
globals.login=true;
}否则{
globals.login=false;
}
返回globals.login;
}

什么是
打印(解码['success')打印?@methankahraman bool。。正确或错误…登录函数未设置为Async,如回答中所述-在前面添加word Wait http.post call-@anmol.majhail谢谢您的帮助!我知道bodyBytes和body在未来没有定义对不起,我忘记了
wait
关键字。答案已更新。