代码之家  ›  专栏  ›  技术社区  ›  DolDurma

颤振获取“类型”列表<dynamic>“不是类型转换错误中“Map<String,dynamic>”类型的子类型

  •  0
  • DolDurma  · 技术社区  · 7 年前

    Out Web服务器将此结果返回为:

    [
      {
        "id": 1,
        "user_id": 10,
        "title": "xxxxxxx",
        "description": "xxxx",
        "type": "post",
        "featured_images": "",
        "slug": "xxxxxxxxx",
        "lang": "xx",
        "visit": 0,
        "click": 0,
        "state": 1,
        "created_at": "xxxxx",
        "updated_at": "xxxxx",
        "categories": [
          {
            "id": 9,
            "title": "xxxx",
            "lang": "fa",
            "parent": 0,
            "click": 0,
            "image": "",
            "created_at": "xxxxx",
            "updated_at": "xxxx",
            "pivot": {
              "contents_id": 1,
              "content_categories_id": 9
            }
          }
        ]
      }
    ]
    

    part 'contents_model.g.dart';
    
    @JsonSerializable(nullable: false)
    class ContentsModel {
      int id;
      @JsonKey(name: 'post_id')
      int postId;
      String title;
      String description;
      String type;
      @JsonKey(name: 'featured_images')
      String featuredImages;
      String slug;
      String lang;
      int visit;
      int click;
      int state;
      @JsonKey(name: 'createdAt')
      String createdAt;
      @JsonKey(name: 'updatedAt')
      String updatedAt;
      @JsonKey(name:'categories')
      CategoriesModel categories;
    
      ContentsModel(this.id, this.postId, this.title, this.description, this.type, this.featuredImages, this.slug, this.lang, this.visit, this.click, this.state, this.createdAt, this.updatedAt, this.categories);
    
      factory ContentsModel.fromJson(Map<String,dynamic> json)=>_$ContentsModelFromJson(json);
      Map<String,dynamic> toJson()=>_$ContentsModelToJson(this);
    }
    
    
    part 'categories_model.g.dart';
    
    @JsonSerializable(nullable: true)
    class CategoriesModel {
      int id;
      String title;
      String lang;
      int parent;
      int click;
      String image;
      @JsonKey(name: 'created_at')
      String createdAt;
      @JsonKey(name: 'updated_at')
      String updatedAt;
    
      CategoriesModel(this.id, this.title, this.lang, this.parent, this.click, this.image, this.createdAt, this.updatedAt);
    
      factory CategoriesModel.fromJson(Map<String,dynamic> json)=>_$CategoriesModelFromJson(json);
      Map<String,dynamic> toJson()=>_$CategoriesModelToJson(this);
    }
    

    现在,当我从服务器成功获取数据时,我无法返回该数据,例如:

      Future<List<ContentsModel>> getContents() async {
        final response = await http.get(Constants.getContents);
        if (response.statusCode == 200) {
          final responseString = jsonDecode(response.body);
          try {
                 List<ContentsModel> responses = 
                       responseString.map((j) =>
                            ContentsModel.fromJson(j)).toList();
                 return responses;
          }catch(error){
            print('Error:  $error');
            return null;
          }
        } else {
          throw Exception('error fetche contents');
        }
      }
    

    return responseString.map<List<ContentsModel>>((json) => ContentsModel.fromJson(json)).toList();

    类型“List”不是类型“Map”的子类型 内铸

    0 回复  |  直到 7 年前
        1
  •  0
  •   DolDurma    5 年前

    作为 @Richard Heap

    CategoriesModel categories;
    

    List<CategoriesModel> categories;
    

    解决了这个问题