Как преобразовать правую сторону Either в общий тип во флаттере
У меня есть расширение для Task (из пакета dartz), которое выглядит так
extension TaskX<T extends Either<Object, U>, U> on Task<T> {
Task<Either<Failure, U>> mapLeftToFailure() {
return this.map(
// Errors are returned as objects
(either) => either.leftMap((obj) {
try {
// So we cast them into a Failure
return obj as Failure;
} catch (e) {
// If it's an unexpected error (not caught by the service)
// We simply rethrow it
throw obj;
}
}),
);
}
}
Цель этого расширения - вернуть значение типа
Either<Failure, U>
Это работало нормально, пока я не переключил свой проект флаттера на нулевую безопасность. Теперь по какой-то причине возвращаемый тип
Either<Failure, dynamic>
.
В моем коде это выглядит так:
await Task(
() => _recipesService.getProduct(),
)
.attempt() // Attempt to run the above code, and catch every exceptions
.mapLeftToFailure() // this returns Task<Either<Failure, dynamic>>
.run()
.then(
(product) => _setProduct(product), // Here I get an error because I expect a type of Either<Failure, Product>
);
Мой вопрос в том, как я могу привести правую сторону Either к правильному типу?