在我的集团州,我有这个:
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)
我认为有一种非常简单的方法可以做到这一点。如果您对这些概念不熟悉,我很难找到任何与 dart/flutter 相关的手册,并且源代码dartz
不是很容易解释。