【发布时间】:2020-08-12 03:28:47
【问题描述】:
在我的集团州,我有这个:
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 的源代码并不是很容易解释。
【问题讨论】: