Flutter 颤振获取json嵌套数据

Flutter 颤振获取json嵌套数据,flutter,dart,Flutter,Dart,这是我得到的json数据: { "data": [ { "id": "1", "name": "Kacchi Biriyani", "videoLink": "https://www.youtube.com/watch?v=K4TOrB7at0Y",

这是我得到的json数据:

{
    "data":
    [
        {
            "id": "1",
            "name": "Kacchi Biriyani",
            "videoLink": "https://www.youtube.com/watch?v=K4TOrB7at0Y",
            "author": "Alan Ford",
            "category":"Biriyani",
            "time": "15 min",
            "steps": {
                "step 1": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
                "step 2": "Suspendisse vel sapien elit"
            },
        },
        {
            "id": "2",
            "name": "Mughal Biriyani",
            "videoLink": "https://www.youtube.com/watch?v=aNVviTECNM0",
            "author": "Ricky James",
            "category":"Biriyani",
            "time": "10 min",
            "steps": {
                "step 1": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
                "step 2": "Suspendisse vel sapien elit",
                "step 3": "Proin luctus, quam non dapibus pretium"
            },
        },
   ]
}
正如您所看到的,这些步骤可以是可变长度的。对于某些配方,它可能是10个步骤,对于某些配方,它可能只是2个步骤

这就是我实现的模型<代码>配方.模型.省道:

class RecipeModel {
  final String id;
  final String name;
  final String videoLink;
  final String author;
  final String category;
  final String time;
  final List<String> steps;
  RecipeModel({
    required this.id,
    required this.name,
    required this.videoLink,
    required this.author,
    required this.category,
    required this.time,
    required this.steps,
  });

  factory RecipeModel.fromJson(Map<String, dynamic> json) {
    return RecipeModel(
      id: json['id'],
      name: json['name'],
      videoLink: json['videoLink'],
      author: json['author'],
      category: json['category'],
      time: json['time'],
      steps: json['steps'],
    );
  }
}

这里我遗漏了什么?

您对步骤的定义是
列表
,而不是传递
映射

试试这个:

steps: u['steps'] != null ? List<String>.from(u['steps'].values) : [],
steps:u['steps']!=无效的列表。从(u['steps'].值):[],
RecipeCard(
  itemName: recipes[index].name,
  categoryName: recipes[index].category,
  time: recipes[index].time,
  videoLink: recipes[index].videoLink,
  authorName: recipes[index].author,
  //need to send the steps for selected recipe
);
steps: u['steps'] != null ? List<String>.from(u['steps'].values) : [],