我正在尝试将列表分配给对象列表,但这显示了上述异常。
List<SubCategoryData>categoryNames = new List<SubCategoryData>();
List<String>categorieslist = [];
bool isFirst=true;
Future<SubCategoryModel>fetchCategories(BuildContext context) async {
String url = "http://106.51.64.251:380/onnet_api/subcatListByCategory.php";
var body = new Map<String,String>();
body['publisherid']= 102.toString();
body['tag'] = "category";
body['subtag']= "list";
body['parentId'] = 10.toString();
http.Response res = await http.post(url,body: body);
final categoryjsondata = json.decode(res.body);
var map = Map<String,dynamic>.from(categoryjsondata);
var categoryResponse = SubCategoryModel.fromJson(map);
if(res.statusCode == 200){
print('category Response: $categoryResponse');
if(categoryResponse.status == 1){
//final categoryModel = json.decode(res.body);
categoryNames = categoryjsondata['data']as List;
print('category data: $categoryNames');
/* for(var model in categorieslist){
categoryNames.add(new SubCategoryData.fromJson(model));
}*/
/* SharedPreferences prefs = await SharedPreferences.getInstance();
print("cat List Size: $categories");
prefs.setStringList("categorylist", categories);*/
Navigator.push(context, MaterialPageRoute(builder: (context)=> ChewieDemo(imageData: images[0],
categoryData:categoryNames.toList())));
}
}
}
看到类别代码的代码,我试图将数据分配给它,然后显示异常。请帮我解决这个错误。 预先感谢。
答案 0 :(得分:0)
尝试将您的代码更改为:
List<SubCategoryData> categoryNames = new ArrayList<>();
希望这能解决您的问题。
答案 1 :(得分:0)
替换以下内容:
categoryNames = categoryjsondata['data']as List;
作者
for(var model in categoryData){
categoryNames.add(new SubCategoryData.fromJson(model));
}
因为第一个返回一个列表,第二个返回一个列表
答案 2 :(得分:0)
您的问题位于这里:
categoryNames = categoryjsondata['data']as List;
categoryNames
已经定义和初始化,其类型为List<SubCategoryData>
。在上面的行中,您尝试为其分配一个List<dynamic>
。那是另一种类型,这就是错误的原因。如果将其分配给其他变量,则可以自由使用它:
final categoryNamesList = categoryjsondata['data'] as List;
顺便说一句,那么您不必在接下来的行中调用.toList()
,因为此变量已经是列表。