异步函数中的 Dart return 关键字

Dart return keyword in an async function

有人能告诉我为什么即使状态为真,return "NOK" 代码仍会执行吗? 这不就是return关键字停止函数执行和return值的目的吗?还是我错过了一些关于异步函数或 Dart 语言本身的东西?

static dynamic getUserRef() async {
    // HttpOverrides.global = MyHttpOverrides();
    bool status;
    await InfosHelper.getInfo('testinfo').then((response) {
      InfoModel info = InfoModel.fromJson(response.data);
      status = info.status;
      Map<String, dynamic> otherData = info.data;
      if (status) {
        return "OK";
      }
    });

    return "NOK";
  }

试试这个

 static Future<String> getUserRef() async {
        // HttpOverrides.global = MyHttpOverrides();            
        final response = await InfosHelper.getInfo('testinfo');
        InfoModel info = InfoModel.fromJson(response.data);
        bool status = info.status;
        Map<String, dynamic> otherData = info.data;
         
        return status ? "OK" : "NOK";
                
      }

您正在调用 .then,这是它自己的一个方法,因此状态为 true 将停止执行 .then 方法,但主 getUserRef 始终 return 'Nok'

 static dynamic getUserRef() async {
    // HttpOverrides.global = MyHttpOverrides();
    bool status;
    var response=await InfosHelper.getInfo('testinfo');
     if (response!=null){
  InfoModel info=InfoModel.fromJson(response.data);
   Map<String, dynamic> otherData = info.data;
  if(info.status){
return 'ok';
}
else{
return 'nok'}
}
}
else{
//Error
}