Я пытаюсь преобразовать объект подкласса, но он не работает. Следующая программа компилируется без ошибок.
VideoStreamModel model = VideoStreamModel("");
VideoStream entity = model;
print(model); // prints VideoStreamModel
print(entity); // prints VideoStreamModel
print(entity as VideoStream); // prints VideoStreamModel
print(cast<VideoStream>(model)); // prints VideoStreamModel
Я написал тестовый пример, чтобы проверить связь двух вышеуказанных классов, и он проходит.
test('should be a subtype of VideoStream', () async {
expect(model, isA<VideoStream>());
});
В чем здесь может быть проблема?
ИЗМЕНИТЬ:
[удалено]
РЕДАКТИРОВАТЬ 2:
[удалено]
Редактировать 3:
Вот полный код, воспроизводящий ошибку.
import 'package:equatable/equatable.dart';
import 'package:test/test.dart';
class A extends Equatable {
final String x;
A(this.x);
@override
List<Object> get props => [x];
}
class B extends A {
B(String x) : super(x);
A method() {
B b = B(x); // doing A b = A(x) makes the test pass
return b;
}
}
void main() {
B b = B("");
test('test', () async {
final expected = A(b.x);
final actual = b.method();
expect(actual, expected);
});
}
Он генерирует следующую ошибку утверждения:
Expected: A:<A>
Actual: B:<B>
Right<dynamic, VideoStream>:<Right(VideoStream)>
, но получилRight<Failure, VideoStream>:<Right(VideoStreamModel)>
.Failure
не являетсяdynamic
, поэтому он терпит неудачу. - person julemand101   schedule 12.12.2020Right
, вы можете попробовать:Right<Object, VideoStream>:<Right(VideoStreamModel)>
- person julemand101   schedule 12.12.2020