[英]How to return Future<object> and assign it to just object , flutter
我有一个自定义 class 从数据库中获取数据,返回Future<List<Line>>
,它位于line_list.dart
文件中:
Future<List<Line>> fetchingLinesData() async {
List<Line> lineList = [];
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'main.db');
Database database = await openDatabase(path, version: 1);
database.transaction((tnx) async {
dbRef.child('line').once().then((DataSnapshot dataSnapshot) async {
dataSnapshot.value.forEach((key, value) async {
List<Station> inLineStations = [];
for (var i = 0; i < 100; i++) {
if (value["station_$i"] != null) {
List<Map> stations = await tnx.rawQuery("SELECT * FROM Station");
stations.forEach((s) {
if (s['stationName'] == value["station_$i"]) {
Station stationInstance = Station(
key: s['key'],
cityName: s['cityName'],
stationName: s['stationName'],
stationLongitude: s['stationLongitude'],
stationLatitude: s['stationLatitude']);
inLineStations.add(stationInstance);
}
});
}
}
Line lineInstance = Line(
startStation: value['start_station'],
endStation: value['end_station'],
inLineStations: inLineStations,
notes: value['notes'],
price: value['price'],
transportationType: value['transportation_type']);
lineList.add(lineInstance);
});
});
});
return lineList;
}
}
然后在我的main.dart
小部件中,我有这个:
List<Line> allLines = [];
我想做这样的事情:
allLines = LinesList().fetchingLinesData();
但当然,它给了我一个错误,因为我试图将Future<List<Line>>
分配给List<Line>
怎么做?
您必须等待未来完成。
allLines = await LinesList().fetchingLinesData();
您只需将下面的代码放入异步 function 使主异步并使您的代码
allLines = await LinesList().fetchingLinesData();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.