我想在我的flutter项目中使用json数组,但这总是像这样的错误
_TypeError (type 'List<dynamic>' is not a subtype of type 'FutureOr<ProvinsiModel>')
我对这个项目的期望是,当我单击一个小部件时,我的意思是它下面将在flutter上打开一个新页面并显示从json数组中获取的列表。
在我的代码中没有错误,但是仅当我单击并切换到另一页时,VSCode中的调试模式突然停止,并在PopUp中显示类似上面的错误。
这是我拥有的代码
提供者
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;
}
}
}
我将使用的数据页面
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
}
},
....
]