【发布时间】:2021-03-24 23:59:11
【问题描述】:
我正在尝试弄清楚如何使用 future 来通过 Internet 获取数据。我试图编写一个简单的代码,将 Future 转换为“平均”数据,但它不起作用,我不明白为什么会这样。
这是我的代码
class Fetch {
Data getData () {
Data data;
data = fetch().then((value) {data = value;}); //here's I'm getting error
}
Future<Data> fetch() async {
int number = await Future.delayed(Duration(seconds: 1), () => 3);
return(Data.fromIt(number));
}
}
class Data{
int date;
Data({this.date});
factory Data.fromIt(int num) {
return Data(
date: num,
);
}
}
在我更正这部分代码后,错误已经消失,但现在 getData() 返回 null 而不是 value:
Data getData () {
Data data;
fetch().then((value) {data = value;});
return data; //null
}
谢谢
【问题讨论】:
-
date = fetch().then(...)表示您正在尝试将Future.then()返回的Future分配给data。您已经在.then回调中分配了data = value,因此外部分配没有意义并且是不必要的。去掉它。更好的是,只需使用async和await,它会更清晰。 -
谢谢,我没注意到。但我仍然很好奇是否有可能以某种方式从未来提取数据。我的意思是
void GetData () => futureFunc().then((value) => data = value)); -
我不明白你的意思。应该没有什么能阻止你这样做。
标签: flutter dart asynchronous future