我正在使用YouTube上的教程中的flutter练习这个covid-19追踪器应用程序,所以在编写了一些代码后,当我点击API并运行应用程序时,它抛出了这个异常,我不明白为什么,因为我是一个初学者,也是Flutter的新手。
import 'dart:convert';
import 'package:covid_tracker/Model/world_states_model.dart';
import 'package:http/http.dart' as http;
import 'Utilities/app_url.dart';
class StatesServices {
// async means waiting for your request
Future<WorldStatesModel> fetchWorldStatesRecords() async {
final response = await http.get(Uri.parse(AppUrl.worldStatesApi));
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
return WorldStatesModel.fromJson(data);
} else {
throw Exception('Error');
}
}
}
class AppUrl {
// this is our base url
static const String baseUrl = 'https://disease.sh/v3/covid-19';
// fetch world covid states
static const String worldStatesApi = '${baseUrl}all';
static const String countriesList = '${baseUrl}countries';
}
2条答案
按热度按时间oipij1gg1#
您得到的状态代码不是200。因此,您的应用程序会抛出一个错误,就像您编写的那样!
第一步是要弄清楚为什么你会得到一个不同于200的状态代码。查看你的代码,你似乎试图访问
'${baseUrl}all'
。这将转换为https://disease.sh/v3/covid-19all
。但这个URL并不存在。若要解决您的问题,请尝试在
${baseUrl}
之后添加/
。使其变为'${baseUrl}/all'
。或者将baseUrl
变量更改为https://disease.sh/v3/covid-19/
。之后,您的错误应该会得到解决。我建议在控制台上打印出你要加载的链接。这样可以防止将来出现类似的问题。或者更有用的是,将它包含在你抛出的异常中。:)
yqyhoc1h2#
如果API中的stataus!=200,则在此行中抛出异常
则表明API未返回所需数据。
尝试换线
到