Как создать суперкласс и поделиться его свойствами - PullRequest
0 голосов
/ 31 марта 2020

У меня есть следующий класс.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...