Метод абстрактного класса Дарта с @required оптимальными параметрами - PullRequest
0 голосов
/ 06 мая 2020

Как использовать аннотацию @required в абстрактном классе? На SubjectVM.dart ошибки нет. Я хочу, чтобы это было @required automati c

import 'package:flutter/material.dart';
import 'package:todo/models/subject.dart';

abstract class SubjectBase {
  void addSubject(Subject value);
  void deleteSubject(Subject value);
  void deleteSubjectByIndex(int index);
  void updateSubject({@required Subject updatedSubject, @required int indexToReplace});
}

SubjectVM.dart

class SubjectVM implements SubjectBase {
  List<Subject> listOfSubjects = <Subject>[];

  @override
  void addSubject(Subject value) {
    // TODO: implement addSubject
  }

  @override
  void deleteSubject(Subject value) {
    // TODO: implement deleteSubject
  }

  @override
  void deleteSubjectByIndex(int index) {
    // TODO: implement deleteSubjectByIndex
  }

  @override
  void updateSubject({Subject updatedSubject, int indexToReplace}) {
    // TODO: implement updateSubject
  }

}

Для SubjectVM нет сообщения об ошибке. Я могу использовать без параметров, но я не хочу этого

SubjectVM subjectVM =  SubjectVM() 
subjectVM.updateSubject();

Я хочу использовать его с @reqiured именованными параметрами. Я могу сделать это, если добавлю аннотации @required к SubjectVM.updateSubject. Но это ручной способ. Есть предложения?

1 Ответ

0 голосов
/ 06 мая 2020

Ваши @required аннотации относятся к классу SubjectBase, а не к SubjectVM. Если вам нужны эти аннотации для работы, вам необходимо выполнить метод SubjectBase. Этот класс является абстрактным и не имеет реализации, но вы можете использовать реализацию дочернего элемента.

Попробуйте следующее:

SubjectBase subjectVM =  SubjectVM();
subjectVM.updateSubject();
...