【问题标题】:How to return future from another class?如何从另一个班级返回未来?
【发布时间】:2020-11-14 00:37:33
【问题描述】:

社区。 我需要帮助。 在 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。

【问题讨论】:

  • 任何人都可以告诉我我从 6 天开始就开始工作吗?
  • 命令 print(contents) 的结果为空?

标签: flutter dart httpclient


【解决方案1】:

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

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

【讨论】:

  • 但它也没有产生结果。 NomethodSuchOperator。尝试调用..[]。我认为它将 fetchloinetail linin 作为流并调用两次。第一次被服务器接受,第二次得到数据,但第一次返回 null。所以我很困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多