缺少 Getter 和 Setter 的具体实现
Missing concrete implementation of Getter and Setter
class Shape {
String color;
void draw() {
print('Draw Random Shape');
}
}
class Rectangle implements Shape {
@override
void draw() {
print('Draw Rectangle');
}
}
现在的问题是我收到一条警告说
Missing concrete implementation of getter Shape.color and setter
Shape.color
我知道 dart 中的每个实例变量都有自己的 getter 和 setter implicitly.But 在接口的情况下如何解决这个 issue.I 也尝试过查看 Whosebug 上的一些类似问题,但它们没有帮助。
Dart 没有从 implements Shape
继承实现,而只是声明 Rectangle
符合 Shape
的接口。
需要在Rectangle
上加上String color;
才能满足implements Shape
.
您可以通过添加字段或 getter 和 setter 来完成此操作。从 class' 界面的角度来看,两者是等价的。
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 仅转发到私有字段而没有附加代码,则后者被认为是不良风格。
或者您可能只想 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');
}
}
希望能帮到你
class Shape {
String color;
void draw() {
print('Draw Random Shape');
}
}
class Rectangle implements Shape {
@override
void draw() {
print('Draw Rectangle');
}
}
现在的问题是我收到一条警告说
Missing concrete implementation of getter Shape.color and setter Shape.color
我知道 dart 中的每个实例变量都有自己的 getter 和 setter implicitly.But 在接口的情况下如何解决这个 issue.I 也尝试过查看 Whosebug 上的一些类似问题,但它们没有帮助。
Dart 没有从 implements Shape
继承实现,而只是声明 Rectangle
符合 Shape
的接口。
需要在Rectangle
上加上String color;
才能满足implements Shape
.
您可以通过添加字段或 getter 和 setter 来完成此操作。从 class' 界面的角度来看,两者是等价的。
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 仅转发到私有字段而没有附加代码,则后者被认为是不良风格。
或者您可能只想 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');
}
}
希望能帮到你