Boa tarde,
ja tentei diversas forma ler e apresentar os dados desse JSON (https://covid19-brazil-api.vercel.app/api/report/v1) , porem me deparo com o erro:
Restarted application in 988ms.
I/flutter (27143): type '(dynamic) => void' is not a subtype of type '(String, dynamic) => void' of 'f' = Error ao carregar lista TRY
E/flutter (27143): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
E/flutter (27143): #0 _HomeCovidState.initState.<anonymous closure>
package:api/main.dart:67
E/flutter (27143): #1 _rootRunUnary (dart:async/zone.dart:1436:47)
E/flutter (27143): #2 _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (27143): <asynchronous suspension>
E/flutter (27143):
Segue meu codigo:
Main.dart
import 'package:api/screens/Covid.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeCovid(),
));
// findAll();
}
class HomeCovid extends StatefulWidget {
@override
_HomeCovidState createState() => _HomeCovidState();
}
class _HomeCovidState extends State<HomeCovid> {
late List<Covid> _covid;
Future<List<Covid>?> _getDadosCovid() async {
try {
List<Covid> listCovid = [];
final response = await http.get(
Uri.parse('https://covid19-brazil-api.vercel.app/api/report/v1'));
if (response.statusCode == 200) {
var decodificaJsonParaObjeto = jsonDecode(response.body);
decodificaJsonParaObjeto
.forEach((item) => listCovid.add(Covid.fromJson(item)));
return listCovid;
} else {
print('Error ao carregar lista');
return null;
}
} catch (e) {
print(' $e = Error ao carregar lista TRY');
return null;
}
}
@override
Widget build(BuildContext context) {
return Text('teste');
}
@override
void initState() {
super.initState();
_getDadosCovid().then((map) {
_covid = map!;
print(_covid.length);
});
}
}
Covid.dart
class Covid {
late List<Data> data;
Covid({
required this.data,
});
Covid.fromJson(Map<String, dynamic> json) {
if (json['data'] != null) {
List<Data> data = [];
json['data'].forEach((v) {
data.add(new Data.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
return data;
}
}
class Data {
int? uid;
String? uf;
String? state;
int? cases;
int? deaths;
int? suspects;
int? refuses;
String? datetime;
Data({
this.uid,
this.uf,
this.state,
this.cases,
this.deaths,
this.suspects,
this.refuses,
this.datetime,
});
Data.fromJson(Map<String, dynamic> json) {
uid = json['uid'];
uf = json['uf'];
state = json['state'];
cases = json['cases'];
deaths = json['deaths'];
suspects = json['suspects'];
refuses = json['refuses'];
datetime = json['datetime'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['uid'] = this.uid;
data['uf'] = this.uf;
data['state'] = this.state;
data['cases'] = this.cases;
data['deaths'] = this.deaths;
data['suspects'] = this.suspects;
data['refuses'] = this.refuses;
data['datetime'] = this.datetime;
return data;
}
}