В моем состоянии blo c у меня есть это:
Option<Either<T, Stream<T>>> optionFailureOrStream,
Может быть пустым (Option
) или иметь error
или stream
.
В моем bloc
я получаю это с optionOf
следующим образом:
yield state.copyWith(optionFailureOrStream: optionOf(failureOrStream));
Теперь в моем виджете я хочу знать, имеет ли оно значение, и если оно имеет значение, я хочу сложить их чтобы вернуть два разных экрана:
if (state.optionFailureOrStream.isSome()) {
final optionFailureOrStream = state.optionFailureOrStream;
optionFailureOrStream.map((a) => a.fold(
(failure) => FailureWidget(failure: failure),
(stream) => buildSaved(stream, context)));
}
Но почему-то я не могу избавиться от типа Option<T>
. Он жалуется на неправильный тип.
The return type 'Option<Widget>' isn't a 'Widget', as required by the closure's context.dart(return_of_invalid_type_from_closure)
Полагаю, есть действительно простой способ сделать это. Мне очень трудно найти какие-либо руководства, связанные с дротиками и трепетанием, и исходный код dartz
не слишком понятен, если вы новичок в этих понятиях.