gpt4 book ai didi

flutter - 如何摆脱Flutter/dart中 'Future'的实例?

转载 作者:行者123 更新时间:2023-12-03 03:23:11 24 4
gpt4 key购买 nike

我有以下代码

import 'package:http/http.dart' as http;
import 'dart:convert';
import 'dart:async';

main(){
var list = logic();
removeOne(list);
}


logic() async{
final result = await http.get('https://invidio.us/api/v1/search?q=tech+lead');
final data = json.decode(result.body);
final myList = [];
data.forEach((e) {
myList.add({"title": e['title'], 'videoId': e['videoId'], 'duration': e['lengthSeconds'], "date": e['publishedText']});
print(myList);
});
return myList;
}

removeOne(aList){
aList.removeLast();
print(aList);
}


当我运行它时,出现以下错误。
Unhandled exception:
NoSuchMethodError: Class 'Future<dynamic>' has no instance method 'removeLast'.
Receiver: Instance of 'Future<dynamic>'
Tried calling: removeLast()
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 removeOne (file:///Users/macpro/Desktop/minimaltube/logic.dart:23:9)
#2 main (file:///Users/macpro/Desktop/minimaltube/logic.dart:7:3)
#3 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:305:19)
#4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)

如何摆脱 var list成为 'Future<dynamic>'的问题?我希望它成为var,以便以后可以访问它,以便 removeOne(list)可以完成其工作。

最佳答案

future 尚未解决,必须首先解决,以便您可以将返回的数据用作列表。

编译器将逐步执行您的main方法,并在解决 future (仍然是 future )之前,将其分配给变量列表,然后在将 future 传递给函数“removeOne(list)”时移至下一行”。

解决 future 的方法是,在函数调用之后添加.then(),以便它等待 future ,并在将来时将其转换为所需的数据类型。

如下替换主代码:

logic().then((list) => removeOne(list));

或者,您可以采用另一种方法使您的完整主方法异步,这是有争议的,有人说这不是一个好习惯。如下所示:
main() async {
var list = await logic();
removeOne(list);
}

关于flutter - 如何摆脱Flutter/dart中 'Future<dynamic>'的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60896058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com