Отсутствует конкретная реализация Getter и Setter - PullRequest
0 голосов
/ 13 декабря 2018
class Shape {
  String color;

  void draw() {
    print('Draw Random Shape');
  }
}

class Rectangle implements Shape {

  @override
    void draw() {
      print('Draw Rectangle');
    }
}

Теперь проблема в том, что я получаю предупреждение о том, что

Отсутствует конкретная реализация геттера Shape.color и сеттера Shape.color

Я знаю, что каждая переменная экземпляра в dart неявно имеет свои собственные методы получения и установки. Но в случае интерфейса, как я могу решить эту проблему. Я также пытался рассмотреть некоторые из подобных вопросов о стекапровороте, но они 'не помогает.

1 Ответ

0 голосов
/ 13 декабря 2018

Dart не наследует реализации от implements Shape, но только утверждает, что Rectangle соответствует интерфейсу Shape.

Вам нужно добавить String color; к Rectangle, чтобы удовлетворить implements Shape.
Вы можете сделать это, добавив поле или, альтернативно, геттер и сеттер.И то, и другое эквивалентно с точки зрения интерфейса класса.

class Rectangle implements Shape {
  String color;

  @override
    void draw() {
      print('Draw Rectangle');
    }
}

или

class Rectangle implements Shape {
  String _color;

  String get color => _color;
  set color(String value) => _color = value;

  @override
    void draw() {
      print('Draw Rectangle');
    }
}

Последнее считается плохим стилем, если получатель и установщик только перенаправляют в приватное поле без дополнительныхкод.

...