我在 Dart 中有一個像這樣的“http.get”類
import 'dart:convert' as convert;
import 'dart:async';
import 'package:http/http.dart' as http;
class Networking {
late Uri url;
Map<dynamic, dynamic> jsonResponse = {};
Networking({required this.url});
List<String> listOfUrls = [];
Future<List<String>> getRawWeatherData() async {
http.Response response = await http.get(url);
Map data = convert.jsonDecode(response.body);
data.remove("schema");
print("data $data");
print("data in networking.dart - ${data["data"]}");
var x = data["data"];
int count = 0;
for (var element in x) {
count ;
}
for (int i = 0; i < count; i ) {
listOfUrls.add(data["data"][i]["uri"]);
}
print("list in networking - $listOfUrls");
return listOfUrls;
}
}
上面的這個類從 http.get 列印出從 Map 構建的正確資料串列。
現在我從有狀態的小部件類中呼叫這個 getRawWeatherData 方法,如下所示
Future<List<String>> getRawData() {
Networking networking = Networking(url: url);
Future<List<String>> rawData = networking.getRawWeatherData() ;
print("rawData in getRawData is $rawData");
return rawData;
}
但是 getRawData() 方法中的列印不列印任何資料。
問題出在哪里 ?
uj5u.com熱心網友回復:
你必須等待來電getRawWheatherData()
List<String> rawData = await networking.getRawWeatherData();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497936.html
上一篇:帶有路由的顫振底部導航欄
