从 api 错误中获取 Json 未处理的异常:类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'List<dynamic&



你好,我有一个问题,我从api中获取类别,它在poster中工作得很好,但在flutter中,我没有使用模型类,只是使用dio。我需要获取这个jsonapi作为类别的顶部条垂直滚动的数组。

这是我的邮递员回复

{
"data": [
{
"id": 1,
"name": "Electronics",
"color": "#ff8000"
},
{
"id": 2,
"name": "SpareParts",
"color": "#00ff40"
},

]
}

在颤振中,我使用了

getCatagories() async {
var tokens;
var dioo = Dio();
dioo.interceptors
.add(InterceptorsWrapper(onRequest: (RequestOptions options) async {
var customHeaders = {
'content-type': 'application/json',
};
options.headers.addAll(customHeaders);
return options;
}));
var response = await dioo.get("https://www.mywebiste.com/api/cat");
if(response.data.isEmpty||response.data==null)
{
}
else
{
}
return response.data;

}

去拿这些分类我用过

List categories = [];
@override
void initState() {
getCatagories().then((data) {
setState(() {
categories = data;
});
});
super.initState();
}

// by default first item will be selected

@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(vertical: kDefaultPadding / 2),
height: 30,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => GestureDetector(
onTap: () {
Fluttertoast.showToast(
msg: "This is Center Short Toast"+selectedIndex.toString(),
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
setState(() {
selectedIndex = index;
});
},
child: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(
left: kDefaultPadding,
// At end item it add extra 20 right  padding
right: index == categories.length - 1 ? kDefaultPadding : 0,
),
padding: EdgeInsets.symmetric(horizontal: kDefaultPadding),
decoration: BoxDecoration(
color: index == selectedIndex
? Colors.white.withOpacity(0.4)
: Colors.transparent,
borderRadius: BorderRadius.circular(6),
),
child: Text(
categories[index],
style: TextStyle(color: Colors.white),
),
),
),
),
);
}

因此,当我运行这些应用程序类别时,滚动条将不会出现,错误为Unhandled Exception:InternalLinkedHashMap<字符串,动态>'不是类型"List "的子类型

您将以Map的形式从请求中获取数据,并将其分配给List。您应该将类别设置为Map:

Map categories;

注意:不要给它泛型。

之后,当在类别中循环时,您将在下面的代码中遇到一些问题。这是另一个问题。:(

相关内容

  • 没有找到相关文章