Classes enfants génériques et appels de constructeurs

Bonjour à tous,

je ne sais pas si le titre est bien formulé alors je vais détailler :

J’ai une classe abstraite abstract class ItemModel, dans cette classe j’ai créer un constructeur nommé creator :

ItemModel.creator(Map<String, dynamic> data) {
  ...
}

J’ai également dans cette classe plusieurs fonctions dont une en particulier getObject :

T getObject<T extends ItemModel>(
  String key,
  T Function(Map<String, dynamic> data) creator,
) {
  ...
}

L’idée étant de créer des objets basés sur ma classe abstraite.
exemple :

class User extends ItemModel {
}

Je tiens à préciser que je n’ai pas de soucis de fonctionnement, mais j’aimerai optimiser 2 points qui sont liés.

Le premier est que j’aimerai faire disparaître le paramètre creator de mon getObject :

En reprenant mon exemple précédent actuellement pour utiliser getObject je dois procéder de la manière suivante :

class User extends ItemModel {
  // Déclaration obligatoire
  User.creator(super.data) : super.creator();

  UserRole get role =>
      getObject(cols.role, (data) => UserRole.creator(data));
  ...
}

Et j’aimerai optimiser cela par :

class User extends ItemModel {
  // Déclaration obligatoire
  User.creator(super.data) : super.creator();

  UserRole get role => getObject(cols.role);
  ...
}

Donc dans ma fonction getObject il faudrait que je puisse créer un objet à partir de mon type générique :

T getObject<T extends ItemModel>(String key) {
  return T.creator(...);
}

Sauf que ça ne fonctionne pas, j’ai pourtant bien déclaré T extends ItemModel donc la classe T contient un constructeur créator.

Avez vous une idée ?

Le second point concerne le constructeur creator :

J’aimerai tout simplement ne plus être obligé de déclarer dans ma classe enfant le constructeur creator qui ne fait rien d’autre que d’appeler le constructeur parent.

class User extends ItemModel {
  // Déclaration obligatoire que j'aimerai supprimer.
  User.creator(super.data) : super.creator();

  ...
}