我有這個功能在未來的構建器中作業:
Future<Data> fetchData(String barCode, String url) async {
final response = await http.get(Uri.parse(url barCode));
Map<String, dynamic> novoJson = json.decode(utf8.decode(response.bodyBytes));
novoJson.forEach((key, value) {
if (value == null) {
novoJson.update(key, (value) => "N?o encontrado");
}
});
if (response.statusCode == 200) {
return Data.fromJson(novoJson);
} else {
throw Exception('Failed to load album');
}
}
class Data {
final Map<String, dynamic> response;
Data({required this.response});
factory Data.fromJson(Map<String, dynamic> json) {
return Data(response: json);
}
}
現在我正在嘗試訪問它在 ElevatedButton 內回傳的 json,如下所示:
onPressed: () {
if (_formKey.currentState!.validate()) {
var futureData = fetchData(myController.text, args.url);
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(title: animacaoRespostaApi());
});
futureData.whenComplete(() {
Navigator.of(context).pop();
print(futureData);
return Navigator.pushNamed(context, args.rota, arguments: ParametrosRetornoConsulta(myController.text, args.url));
});
}
}
但是當列印它時,我得到一個 Future 的實體而不是物件,并且我無法訪問它的內容,futureData['id']例如。我怎樣才能讓 futureData 不再是一個 Future 并成為一個可迭代的物件?
uj5u.com熱心網友回復:
Future<Data> fetchData是未來,你需要使用await資料。
onPressed: () async {
if (_formKey.currentState!.validate()) {
var futureData = await fetchData(myController.text, args.url);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/372206.html
標籤:扑
上一篇:如何在flutter的文本欄位中將suffixIcon更改為自定義圖示
下一篇:顫動:滾動時要越過曲線部分的資料
