首页 > 解决方案 > 将 API 数据从类传递给 GetX 控制器

问题描述

如何将解码后的数据从我的 Api 传递到我的 GetX 控制器?

这是我的“德国”类和我的 fetchGermany() 函数。

Future<Germany> fetchGermany() async {
  final response =
      await get(Uri.parse('https://api.corona-zahlen.org/germany'));

  if (response.statusCode == 200) {
    return Germany.fromJson(jsonDecode(response.body));
  } else {
    throw Exception('Failed to get data');
  }
}

class Germany {
  int cases;
  int deaths;
  int recovered;
  double weekIncidence;
  double casesPer100k;
  int casesPerWeek;

  Germany(
      {required this.cases,
      required this.deaths,
      required this.recovered,
      required this.weekIncidence,
      required this.casesPer100k,
      required this.casesPerWeek});

  factory Germany.fromJson(Map<String, dynamic> json) {
    return Germany(
        cases: json["cases"],
        deaths: json["deaths"],
        recovered: json["recovered"],
        weekIncidence: json["weekIncidence"],
        casesPer100k: json["casesPer100k"],
        casesPerWeek: json["casesPerWeek"]);
  }
}

这是我目前为空的 GetX 控制器:

class DetailController extends GetxController {

}

所以基本上我只想能够访问这些数据:

    cases: json["cases"],
    deaths: json["deaths"],
    recovered: json["recovered"],
    weekIncidence: json["weekIncidence"],
    casesPer100k: json["casesPer100k"],
    casesPerWeek: json["casesPerWeek"]

标签: apiflutterdartgetflutter-getx

解决方案


为什么不直接使用返回的Germany对象呢?
我认为没有必要在GetxController这里使用。

可以简单地用作:

Germany _germany;

@override
void initState() {
  super.initState();
  fetchGermanyData();
}

fetchGermanyData() async {
  final fetchedData = await fetchGermany();
  setState(() => _germany = fetchedData);
}

/// use ? : operator to show relevant UI in the build method.

推荐阅读