flutter - 如何从另一个班级返回未来?
问题描述
社区。我需要帮助。在 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。
解决方案
假设fetchloginlevel()
工作正常并获取您想要使用的数据,您只需转换getCall()
为async
方法并await
获得如下结果:
void getCall() async {
try{
futureloinlevel = await ayncla.fetchloginlevel("StoreLogin", lang, context);
} catch (err) {
print('Caught error: $err');
}
}
推荐阅读
- python - 如何有效地计算python中的离散概率?
- html - 图片背后的移动菜单
- r - R Markdown - PDF 输出中绘图旁边的说明
- javascript - 如何在页面中使用(允许)cookie?Javascript
- flutter - 在 GetX 内部分支的正确方法是什么?
- azure-devops - Azure Devops - 无法构建从 vs2017-win2016 到 windows-latest 的管道代理
- spring-boot - 如何在 SpringBoot 中创建 Bean
- reactjs - React:如何在我的 JSX 中使用 API 调用的结果?(范围问题)
- javascript - 使用 Graphql 装饰器的自定义装饰器
- java - 如何解决 java.lang.ClassCastException:net.sf.json.JSONObject 无法转换为 net.sf.json.JSONObject