[英]Extension of abstract class doesn't work properly in Dart
我在 Dart 中遇到了抽象 class 扩展的奇怪行为。
我有以下文件:
BaseListItem.dart
abstract class BaseListItem {
ImageProvider get _icon;
IHealthChecker get _healthChecker;
String get _name;
String get _unit;
Widget build(BuildContext context) {
... build widgets tree ...
}
}
温度.dart
class Temperature extends BaseListItem {
@override
IHealthChecker get _healthChecker => TemperatureHealthChecker();
@override
ImageProvider<Object> get _icon => const Svg('assets/images/icons/Temperature.svg');
@override
String get _name => "Temperature";
@override
String get _unit => "°C";
}
我在SensorsList.dart文件中使用的所有这些 inheritance 东西。
class SensorsList extends StatefulWidget {
@override
State<StatefulWidget> createState() => _StateSensorsList();
}
class _StateSensorsList extends State<SensorsList> {
final List<BaseListItem> sensors = [Temperature(), Humidity()];
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: sensors.length,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return sensors[index].build(context);
});
}
}
此代码已构建但在运行时失败并出现下一个异常
Exception has occurred.
NoSuchMethodError (NoSuchMethodError: Class 'Temperature' has no instance getter '_icon'.
Receiver: Instance of 'Temperature'
Tried calling: _icon)
❗️如果我将抽象 class BaseListItem 和他的扩展温度放在一个文件中,问题就消失了。❗️
它发生的原因是因为变量是私有的。 私有变量只能在同一个文件中访问。 另请参阅在 Dart 中,如何从另一个文件中的子类访问父私有 var?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.