這是我想呼叫的未來函式:
Future<List<Marker>> getMarkers() async {
List<Marker> markerTemp = [];
List<String> friendsList = [];
QuerySnapshot snapshot = FireStoreUtils.getFriendsList(current.userID);
for (var doc in snapshot.docs) {
friendsList.add(doc.reference.id);
}
for (var friend in friendsList) {
DocumentSnapshot document = await locationRef.doc(friend).get();
MarkerTemp.add(Marker(...))
}
return markerTemp;
}
現在我希望它在 FutureBuilder 小部件中被呼叫,以將結果保存在一個名為 markerList 的變數中,該變數對我的視圖很有用。我能怎么做?
我很確定這是一個愚蠢的問題,但我在網上找不到確切的答案
uj5u.com熱心網友回復:
您的未來構建器在您的案例中完成未來時,將回傳一個標記串列。現在要使用該串列,您不必再次存盤它,它已經回傳并存盤snapshot在您未來的構建器中。您可以通過列印它的長度來驗證這一點:
if(snapshot.hasData) print(snapshot.data.length.toString());
uj5u.com熱心網友回復:
return FutureBuilder<List<Marker>>(
future: getMarkers(),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
// async call has not finished
return const Center(child: CircularProgressIndicator());
}
if (snapshot.hasError) {
// getMarkers() throws an exception
return Center(child: Text(snapshot.error.toString()));
}
if (!snapshot.hasData) {
// getMarkers() returns null
return const Center(child: Text("getMarkers() returns null!"));
}
markerList = snapshot.data as List<Marker>; // cast to List<Marker>
return SomeWidget(); // use markerList in this Widget
},
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/351462.html
上一篇:DateTime.add()不能有效地添加請求的時間量
下一篇:制作可重用的顫動小部件
