【发布时间】:2020-07-07 11:35:26
【问题描述】:
目前正在使用 API 开发一个颤振项目。我对颤振很陌生,
我的代码: 结果为空。 研究了很长时间,但找不到解决方案。首先,尝试一个颤振应用程序,因此我对此很陌生,将不胜感激任何解决方案或提示/资源。 如您所见,所有变量都导致 null,我尝试打印它们无法弄清楚原因。
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
void main() => runApp(MyApp());
Future<Data> getData() async {
final response = await get("https://covid-api.com/api/reports?date=2020-03-25&iso=TUR®ion_name=Turkey");
if(response.statusCode == 200) {
return Data.fromJson(jsonDecode(response.body));
} else {
throw Exception('Not Working');
}
}
class Data {
String date;
int confirmed;
int deaths;
int recovered;
int confirmedDiff;
int deathsDiff;
int recoveredDiff;
int active;
int activeDiff;
double fatalityRate;
Data({
this.date,
this.confirmed,
this.deaths,
this.recovered,
this.confirmedDiff,
this.deathsDiff,
this.recoveredDiff,
this.active,
this.activeDiff,
this.fatalityRate,
});
factory Data.fromJson(Map<String, dynamic> json) {
return Data(
confirmed: json['confirmed'],
deaths: json['deaths'],
recovered: json['recovered'],
confirmedDiff: json['confirmed_diff'],
deathsDiff: json['deaths_diff'],
recoveredDiff: json['recovered_diff'],
active: json['active'],
activeDiff: json['active_diff'],
fatalityRate: json['fatality_rate'],
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['date'] = this.date;
data['confirmed'] = this.confirmed;
data['deaths'] = this.deaths;
data['recovered'] = this.recovered;
data['confirmed_diff'] = this.confirmedDiff;
data['deaths_diff'] = this.deathsDiff;
data['recovered_diff'] = this.recoveredDiff;
data['active'] = this.active;
data['active_diff'] = this.activeDiff;
data['fatality_rate'] = this.fatalityRate;
return data;
}
}
class MyApp extends StatelessWidget {
final Future<Data> data = getData();
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primaryColor: Colors.red),
home: Scaffold(
appBar: AppBar(title: Text('COVID-19 Turkey')),
body: Center(
child: FutureBuilder<Data>(
future: data,
builder: (context, snapshot) {
print(snapshot.data.deaths);
print('wtf');
print(snapshot.data.deathsDiff);
print(snapshot.data.recovered);
if(snapshot.hasData){
return Text(snapshot.data.confirmed.toString());
} else if (snapshot.hasError) {
return Text('Error');
}
return Center(child: CircularProgressIndicator(),);
},
),)
)
);
}
}
【问题讨论】:
-
首先,future 参数不正确,因为它应该是“getData()”而不是数据。然后您需要将 getData() 更改为 Future
. -
嗨,我不明白你指的是哪个 Future,对不起,我是 Flutter 和 dart 的新手。
-
我指的是 FutureBuilder() 小部件中的 @required 未来参数。你让它工作了吗?