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

标签 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) {
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/

相关文章:

ajax - 如何使用 Protocol Buffer 序列化 Go 结构并在 Dart over Ajax 中使用它们

flutter - 在 Flutter 中,如何在某个 (x,y) 位置找到小部件?

gridview - Flutter GridView 计数更新给出了错误的滚动位置

flutter - 当 ListView 下方的小部件的高度降低时,在框架期间计划构建

flutter - 如何在 flutter 中获得渐变底部导航选项卡?

unit-testing - 如何在 Dart 或 Flutter 中模拟静态 getter 的返回值?

Flutter rxDart BehaviorSubject 丢失错误消息

flutter - 如何使用 onFieldSubmitted 单独验证 TextFormField

function - Iterable.expand(Iterable Function(dynamic) f) 函数在 Dart 中如何工作?

firebase - Flutter 中从 Firestore 查询单个文档(cloud_firestore 插件)