首页 > 解决方案 > 如何从另一个班级返回未来?

问题描述

社区。我需要帮助。在 main.dart 中,我正在调用另一个类中的未来函数。

 @override
      void initState() {
        super.initState();
    
          
          getCall();
         
    
      }

和接电话是一样的。

Future<List> futureloinlevel;
    AsynFunctions ayncla=new AsynFunctions();

    void getCall(){
  try{
    futureloinlevel=  ayncla.fetchloginlevel("StoreLogin", lang, context);
  } catch (err) {
    print('Caught error: $err');
  }
}

类中的函数AsynFunctions

    Future<List<Result>> fetchloginlevel(String screenname,String lang,BuildContext context) async {
                 var lname="ShowScreenLabels?ScreenName=";
  
              List<Result>resultlist;
   try{
    var clien=await genrateClient(context);
var link="$v$lname$screenname&LangType="+lang;
print(link);


   var request = await clien.getUrl(
        Uri.parse(link));
   
    request.headers.set("authorization", StoreConfig.basicAuth);
    HttpClientResponse response = await request.close();
    

    print(response.toString());
     response
        .transform(utf8.decoder)
       
        .listen((contents) async {

    if (response.statusCode == 200) {
      
      print(contents);

      userMap = await jsonDecode(contents)as Map;

      var uer= LoginLevel.fromJson(userMap);

      resultlist=uer.result;
     

      


    } else {
      
      throw Exception('Failed to load album');
    }

        });
   
    return resultlist;

   }on Exception catch (e) {
     print('error caught: $e');
   }


  }

此函数不返回任何内容。我如何从这里返回未来列表?调用函数时显示 Null。

标签: flutterdarthttpclient

解决方案


假设fetchloginlevel()工作正常并获取您想要使用的数据,您只需转换getCall()async方法并await获得如下结果:

void getCall() async {
  try{
    futureloinlevel = await ayncla.fetchloginlevel("StoreLogin", lang, context);
  } catch (err) {
    print('Caught error: $err');
  }
}

推荐阅读