Я хочу использовать массив json в моем проекте флаттера, но это всегда такая ошибка
_TypeError (type 'List<dynamic>' is not a subtype of type 'FutureOr<ProvinsiModel>')
чего я ожидаю от этого проекта, так это того, что когда я нажимаю на виджет, я имею в виду под ним откроет новую страницу при флаттере и отобразит список, взятый из массива json.
в моем коде нет ошибки, но только когда я нажимаю и переключаюсь на другую страницу, режим отладки в VSCode внезапно останавливается и отображает ошибку, подобную приведенной выше, в PopUp.
, и это код, который у меня есть
provider
class IndonesianProvinsiProvider with ChangeNotifier {
var api = ApiServices();
ProvinsiModel indonesia;
Future<ProvinsiModel> getIndonesianProvinsiProvider() async {
final response = await api.client.get("${api.baseUrl}/indonesia/");
if (response.statusCode == 200) {
notifyListeners();
final data = jsonDecode(response.body);
return data;
} else {
return null;
}
}
}
page для данных, которые я буду использовать
class ProvinsiPage extends StatelessWidget {
final List<ProvinsiModel> data;
const ProvinsiPage({Key key, this.data}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(
itemCount: data.length,
itemBuilder: (context, index) {
return Card(
child: Column(
children: <Widget>[
Card(child: Text(data[index].attributes.provinsi))
],
),
);
},
)
);
}
}
, и я называю эти данные с future и future.builder ()
GestureDetector(
onTap: () {
Navigator.push(
context, MaterialPageRoute(
builder: (context) => FutureBuilder (
future: Provider.of<IndonesianProvinsiProvider>(context, listen: false).getIndonesianProvinsiProvider(),
builder: (context, snapshot) {
if (snapshot.data == null) { // Cek jika snapshot tidak menerima data atau null
return Center( // maka
child: CircularProgressIndicator(), // menampilkan loading
);
} else { // maka
return ProvinsiPage( // data dikirim ke class PostinganList
data: snapshot.data,
);
}
}
)
),
);
},
child: IndonesiaStatsWidget (
bgColor: Colors.redAccent,
indo: Provider.of<IndonesianProvider>(context).indonesia,
widgetBgColor: Colors.white,
),
),
для json что я получил от провайдера такие запросы
[
{
"attributes": {
"FID": 11,
"Kode_Provi": 31,
"Provinsi": "DKI Jakarta",
"Kasus_Posi": 6895,
"Kasus_Semb": 1682,
"Kasus_Meni": 509
}
},
{
"attributes": {
"FID": 15,
"Kode_Provi": 35,
"Provinsi": "Jawa Timur",
"Kasus_Posi": 4142,
"Kasus_Semb": 522,
"Kasus_Meni": 320
}
},
....
]