FlutterAPI抛出异常

pu82cl6c  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(180)

我正在使用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';
}

oipij1gg

oipij1gg1#

您得到的状态代码不是200。因此,您的应用程序会抛出一个错误,就像您编写的那样!
第一步是要弄清楚为什么你会得到一个不同于200的状态代码。查看你的代码,你似乎试图访问'${baseUrl}all'。这将转换为https://disease.sh/v3/covid-19all。但这个URL并不存在。
若要解决您的问题,请尝试在${baseUrl}之后添加/。使其变为'${baseUrl}/all'。或者将baseUrl变量更改为https://disease.sh/v3/covid-19/。之后,您的错误应该会得到解决。
我建议在控制台上打印出你要加载的链接。这样可以防止将来出现类似的问题。或者更有用的是,将它包含在你抛出的异常中。:)

yqyhoc1h

yqyhoc1h2#

如果API中的stataus!=200,则在此行中抛出异常

throw Exception('Error');

则表明API未返回所需数据。
尝试换线

static const String baseUrl = 'https://disease.sh/v3/covid-19';

static const String baseUrl = 'https://disease.sh/v3/covid-19/';

相关问题