Flutter get“类型'List '不是类型'Map '的子类型,类型转换错误

2024-04-27

网络服务器返回的结果如下:

[
  {
    "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”的子类型 在类型转换中


as @理查德·希普 https://stackoverflow.com/users/9597706/richard-heap评论、修改

CategoriesModel categories;

to

List<CategoriesModel> categories;

解决了这个问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter get“类型'List '不是类型'Map '的子类型,类型转换错误 的相关文章

  • 创建具有负边框半径的按钮并在 Flutter 中对齐它们

    我想建立一个这样的布局 其中两个外部元素是按钮 而内部元素是 TextField 如何在 Flutter 中创建这样的布局 我的想法是使用绝对位置来对齐每个元素的左侧 并使用标高来处理重叠 但我不确定这是最好的方法 而且我不知道如何创建按钮
  • Flutter更新Appbar中的文本

    我需要帮助更新应用栏中的文本以匹配我当前所在的页面 因此 如果我在 设置 页面中 那么我需要在 AppBar 文本中显示它 我添加代码和屏幕截图是为了更好地解释我想要实现的目标 主dart void main gt runApp MyApp
  • Flutter 中的 SharedPreferences 错误

    我正在使用shared preferences我的 Flutter 应用程序中的插件 从某个时刻开始 可能是在 Flutter 升级之后 它开始抛出异常 E flutter 27778 ERROR topaz lib tonic loggi
  • 如何在 Flutter 中创建网络图像列表

    我使用 Carousel Pro 包在屏幕上实现轮播 在这个 Carousel 类中它需要一个图像列表 Carousel 类的语法是 Carousel images NetworkImage https cdn images 1 mediu
  • 导入的包“路径”不是导入包的依赖项

    我刚刚升级了我的软件包 现在我开始看到一条警告 是什么原因造成的 您的一个或部分包裹 很可能是path provider https pub dev packages path provider had path https pub dev
  • 为什么 Dart 中的原生包装函数与非常轻量级的“DEFINE NATIVE ENTRY”函数相比如此重量级?

    我不明白 为什么要这样保证 这是自定义本机函数的包装器dart runtime vm native entry cc 它适用于想要编写的 Dart 程序员native extensions void NativeEntry NativeCa
  • 如果没有 Scaffold,Material App 样式将无法工作

    我正在尝试创建一个没有 Scaffold 元素的 Material design 应用程序 这是纯粹的默认应用程序 import package flutter material dart void main gt runApp MyApp
  • 如何:默认显示 video_player 插件的播放控件 (flutter-web)

    有什么方法可以默认显示视频播放器的控件吗 如果我在浏览器中右键单击视频 我就可以显示它们 所以我假设必须有一种默认显示的方法 我无法找到默认显示 video player 控件的方法 但使用了这个包 它在 Flutter web 上工作得很
  • 颤动中的弯曲导航栏

    目前 我在 flutter 中有一个库https pub dev packages curved navigation bar https pub dev packages curved navigation bar并已经在我的项目中实现了
  • 如何在 Dart 中打印美元符号 $

    我实际上需要在 Dart 中在变量之前打印一个美元符号 例如 void main int dollars 42 print I have dollars I have 42 我希望输出为 我有 42 美元 我怎样才能做到这一点 谢谢 飞镖弦
  • 源单元“_BuildScript_”中“语义分析”阶段出现异常

    评估根项目 android 时出现问题 配置项目 app 时出现问题 无法打开构建文件 C Users InFED Laptop Documents GitHub sustain and save android app build gra
  • 如何解决 Flutter 中的操作系统错误:权限被拒绝,errno = 13

    我想将我的文档文件存储到 存储 模拟 0 下载 我收到这个错误 未处理的异常 FileSystemException 无法打开文件 路径 storage emulated 0 Download file pdf 操作系统错误 权限被拒绝 e
  • Flutter中是否可以使用FCM实现通知分组/捆绑?

    我尝试像这样实现群组通知Android 群组通知 https developer android com training notify user group and iOS群组通知 https developer apple com vi
  • 如何在 Dart 中传递常见参数?

    说吧 我有 callback orderBy foo reverse true localToThis callback orderBy foo reverse true 您可以在两个回调中看到 我传递了相同的参数 foo reverse
  • 在 Dart 中查找和替换字符串

    我正在为这个应用程序使用 flutter 但我在应用程序的逻辑方面遇到了问题 任何帮助深表感谢 应用程序目标 通过以下方式将所有输入缩写解码 替换 为单词 用户通过文本框输入文本 应用程序查找任何缩写 几个 并仅用文本替换缩写 我能够使用一
  • SizedBox 与 Padding、Margin 的区别

    我们应该使用 Margin Padding 或 SizedBox 来在小部件之间提供间距吗 小部件的 Margin 和 padding 可以完成工作 那么 SizedBox 的用途是什么 SizedBox creates space bet
  • 如何在 Flutter 中为 Button 添加渐变?

    有没有办法改变ElevatedButton背景颜色渐变 如果没有一些小瑕疵或问题 例如缺少涟漪效应 不需要的边框 不尊重主题的内容 上述所有解决方案都无法真正发挥作用minWidth对于按钮 The 下面的解决方案没有上述问题 关键部分是使
  • 将多个身份验证提供商链接到一个帐户

    我已经实现了 Facebook 和 Google 登录 但 FireBase 文档称 如果同一用户首先使用 Facebook 注册 然后尝试使用 Google 登录 使用相同的电子邮件 这将导致错误 所以我按照文档并尝试配置帐户关联 但我不
  • Flutter 分析/构建在 GitHub 操作中失败

    当运行以下操作时 它会失败flutter analyze 如果我删除它 稍后会失败flutter build 这两个命令在本地都可以正常工作 我理解该消息 但无法理解包路径可能有什么问题 GitHub 操作错误 flutter analyz
  • 如何在 flutter 中用动画 POP

    我正在触发 Navigator pop 事件 并且想要淡出到页面的过渡 我尝试过 Fluro 但没有尝试过 我对实施它不感兴趣 这就是我正在做的 Widget build BuildContext context return Scaffo

随机推荐