You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中将类Python字典转换为自定义User模型列表

转换步骤

你拿到的类Python字典结构在Flutter中对应的类型是Map<int, Map<String, dynamic>>,按以下两步操作即可完成转换:

1. 定义User模型类

新增带fromMap命名构造的User类,支持直接从字典生成User实例:

class User {
  final String id;
  final String name;

  User({
    required this.id,
    required this.name,
  });

  // 从Map构造User的专用方法
  User.fromMap(Map<String, dynamic> map) : 
    id = map['id'] as String,
    // 注意此处key要和数据源的大写开头Name保持一致
    name = map['Name'] as String;

  // 可选:方便调试查看输出的重写方法
  @override
  String toString() => 'User(id: $id, name: $name)';
}

2. 执行格式转换

提取原始Map的所有value值(即内层的单个用户字典),批量转换后生成列表:

void main() {
  // 你从数据源获取到的原始数据
  final Map<int, Map<String, dynamic>> rawData = {
    0: {'id': '3422', 'Name': 'John',},
    1: {'id': '3322', 'Name': 'Mark',}
  };

  // 核心转换逻辑
  final List<User> allUsers = rawData.values.map((userMap) => User.fromMap(userMap)).toList();

  // 验证输出,结果为 [User(id: 3422, name: John), User(id: 3322, name: Mark)]
  print(allUsers);
}

可选优化

如果不确定数据源的字段是否可能为空,可以修改类型转换逻辑加默认值,避免运行时报错:

User.fromMap(Map<String, dynamic> map) : 
  id = map['id'] as String? ?? '',
  name = map['Name'] as String? ?? '未知用户名';

内容的提问来源于stack exchange,提问作者Lash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:18:03