У меня есть следующий класс.
class ResultModel {
int count;
String next;
dynamic previous;
List<Job> results;
ResultModel({
this.count,
this.next,
this.previous,
this.results,
});
factory ResultModel.fromJson(Map<String, dynamic> json) {
return ResultModel(
count: json['count'],
next: json['next'],
previous: json['previous'],
results: _parseResult(json['results']),
);
}
}
_parseResult(List<dynamic> data) {
List<Job> results = new List<Job>();
data.forEach((item) {
results.add(Job.fromJson(item));
});
return results;
}
Этот класс делает одно и то же для трех разных независимых классов (Работа, Блог, Вопрос). Вместо того, чтобы переписывать вышеприведенный суперкласс для каждого из других файлов классов, есть ли способ просто расширить его и наследовать для каждого другого случая?
Например, в _parseResult, функция, которую мне нужно было бы сделать что-то как это results.add(Job.fromJson(item));
, что означает, что я должен явно указать класс (в данном случае Job ).
Класс Job выглядит примерно так:
class Job {
String jobid;
String jobtitle;
Job({
this.jobid,
this.jobtitle,
});
factory Job.fromJson(Map<String, dynamic> json) {
return Job(
jobid: json['job_id'],
jobtitle: json['job_title'],
);
}
}
И класс блога:
class Blog {
String blogid;
String blogtitle;
Job({
this.blogid,
this.blogtitle,
});
factory Blog.fromJson(Map<String, dynamic> json) {
return Blog(
blogid: json['blog_id'],
blogtitle: json['blog_title'],
);
}
}
Я бы хотел что-то вроде: class Job extends ResultModel {
и class Blog extends ResultModel {
, не беспокоясь о типе (<Job>
) в ResultModel и функции _parseResult.