Flutter-在其他模型中导入模型

k10s72fa  于 2023-06-30  发布在  Flutter
关注(0)|答案(1)|浏览(129)

Flutter中,我有两个模型。我们可以叫父亲和儿子。
Son模型是

class GraphData {
      int timestamp;
      double value;
      bool error;

  GraphData({
    this.timestamp,
    this.value,
    this.error,
  });

  factory GraphData.fromJson(Map<String, dynamic> json) => new GraphData(
        timestamp: json["x"],
        value: json["y"],
        error: json["error"],
      );
}

父亲的模型

import 'graph_data_model.dart';

class Graph {
  String name;
  List<GraphData> data; 
  int type;

  Graph({
    this.name,
    this.data,
    this.type,
  });

  factory Graph.fromJson(Map<String, dynamic> json) => new Graph(
        name: json["name"],
        data: json['data'], //Error here
        type: json["type"],
      );
}

我想导入儿子在父亲模型。使用此代码返回
_TypeError(类型“List< dynamic >”不是类型“List”的子类型< GraphData >)
那么:正确的方法是什么?

解决方案

儿子模型

import 'graph_data_model.dart';

class Graph {
  String name;
  List<GraphData> data;
  int type;

  Graph({
    this.name,
    this.data,
    this.type,
  });

  factory Graph.fromJson(Map<String, dynamic> json) {
    var list = json['data'] as List;
    List<GraphData> data = list.map((i) => GraphData.fromJson(i)).toList();

    return Graph(
      name: json["name"],
      data: data,
      type: json["type"],
    );
  }
}
2w3kk1z5

2w3kk1z51#

发生错误_TypeError (type 'List <dynamic> ' is not a subtype of type 'List <GraphData>')是因为json返回的反序列化List是List<dynamic>,无法直接Map到List<GraphData>。无法识别反序列化列表中的Object是否与GraphData匹配。
这里可以做的是从json['data']解析List<dynamic>,然后将其Map到List<GraphData>

return Graph(
  name: json['name'],
  data: (json['data'] as List).map((model)=> GraphData.fromJson(model)).toList(),
  type: json['type'],
);

相关问题