缺少Getter和Setter的具体实现

时间:2018-12-13 06:30:35

标签: dart dart-pub

class Shape {
  String color;

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

class Rectangle implements Shape {

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

现在的问题是我收到警告说

  

缺少getter Shape.color和setter的具体实现   Shape.color

我知道dart中的每个实例变量都隐式地有自己的getter和setter。但是在使用接口的情况下,我该如何解决此问题。我也尝试着研究一下stackoverflow上的一些类似问题,但它们没有帮助。

2 个答案:

答案 0 :(得分:4)

Dart不会从implements Shape继承实现,而仅声明Rectangle符合Shape的接口。

您需要将String color;添加到Rectangle才能满足implements Shape
您可以通过添加字段,或者添加getter和setter来实现。从类的界面角度来看,两者都是等效的。

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');
    }
}

如果getter和setter只转发到没有其他代码的私有字段,则后者被认为是较差的样式。

答案 1 :(得分:0)

或者也许您只想extends,而不需要implements

您可以将代码更改为此吗?

import 'package:meta/meta.dart';


abstract class Shape {
  String color;

  Shape({
    @required this.color 
  });

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

class Rectangle extends Shape {
  Rectangle() : super(
    color: "#ff00ff"
  );

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

希望有帮助