我有一个文件,里面有下面的代码,我想通过导入在另一个文件中使用它,但是Map<String,dynamic> dataList的值总是为空。为什么?
import 'package:http/http.dart' as http;
import 'dart:convert';
class Structure {
Map<String, dynamic> dataList = <String, dynamic>{};
final String apiKey = "Dx6Raz0w6yVEEilPlk2edTmDSJBvTJh7qkou7OwW";
String query = "Cheddar Cheese";
String dataType = "SR Legacy";
String pageSize = "25";
String pageNumber = "2";
String sortBy = "publishedDate";
String sortOrder = "asc";
Future<void> readData() async {
query.replaceAll(' ', '%20');
dataType.replaceAll(' ', '%20');
String request =
"https://api.nal.usda.gov/fdc/v1/foods/search?query=$query&dataType=$dataType&pageSize=$pageSize&pageNumber=$pageNumber&sortBy=$sortBy&sortOrder=$sortOrder&api_key=$apiKey";
final response = await http.get(Uri.parse(request));
if (response.statusCode == 200) {
Map<String, dynamic> data = jsonDecode(response.body);
dataList = data;
} else {
throw Exception('Failed to fetch data');
}
}
}
字符串
然后在我尝试的另一个文件中:
Structure s = Structure();
s.readData();
print('$s.dataList');
型
我也试过:
Structure s = Structure();
setState(() {s.readData();});
print('$s.dataList');
型
但是dataList总是空的,为什么?
1条答案
按热度按时间bnl4lu3b1#
代码中有2处错误
1.你必须使用等待-
等待s.readData();
1.您需要在print语句中使用{},如下所示-
打印(“${s.数据列表}”);
所以你的另一个文件代码是-
字符串
如果你想在一个小部件中使用它,比如一个升高的按钮,你可以这样使用它-
型