颤振 Json 未处理异常:类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'Iterable<dynamic>'



类别错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型

class Category {
int id;
String categoryName;
String seoUrl;

Category(this.id,this.categoryName,this.seoUrl);
Category.fromJson(Map json){
id = json["id"];
categoryName = json["categoryName"];
seoUrl = json["seoUrl"];
}
Map toJson(){
return {
"id": id,
"categoryName": categoryName,
"seoUrl": seoUrl
};
}
}

类主屏幕

错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型


import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http_demo/data/api/category_api.dart';
import 'package:http_demo/models/category.dart';
class MainScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MainScreenState();
}
}
class MainScreenState extends State {
List<Category> categories = List<Category>();
List<Widget> categoryWidgets = List<Widget>();
@override
void initState() {
getCategoriesFromApi();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"Alışveriş Sistemi",
style: TextStyle(color: Colors.white),
),
backgroundColor: Colors.blueGrey,
centerTitle: true,
),
body: Padding(
padding: EdgeInsets.all(10.0),
child: Column(
children: <Widget>[
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: categoryWidgets,
),
)
],
),
),
);
}
void getCategoriesFromApi() {
CategoryApi.getCategories().then((response) {
setState(() {
Iterable list = json.decode(response.body);
//categories = list.map((category) => Category.fromJson(category)).toList();
this.categories = List<Category>.from(list.map((model)=> Category.fromJson(model)));
getCategoryWidgets();
});
});
}
List<Widget> getCategoryWidgets() {
for (int i = 0; i < categories.length; i++) {
categoryWidgets.add(getCategoryWidget(categories[i]));
}
return categoryWidgets;
}
Widget getCategoryWidget(Category category) {
return FlatButton(
onPressed: null,
child: Text(
category.categoryName,
style: TextStyle(color: Colors.blueGrey),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
side: BorderSide(color: Colors.lightGreenAccent),
),
);
}
}

Error: Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型错误:未处理的异常:类型'_InternalLinkedHashMap<字符串,动态>'不是"Iterable"类型的子类型

请检查转换JSON后的响应。

void getCategoriesFromApi() {
CategoryApi.getCategories().then((response) {
setState(() {
var list = json.decode(response.body);
//categories = list.map((category) => Category.fromJson(category)).toList();
if (list is List) {
this.categories = list.map((e) => Category.fromJson(e)).toList();
getCategoryWidgets();
} else {
print('response is not list');
}
});
});
}

相关内容

最新更新