[英]ScanStreamTransformer in bloc pattern
我遇到过这个问题:
Performing hot restart... Syncing files to device Android SDK built for x86... lib/blocs/movie_detail_bloc.dart:28:22: Error: A comparison expression can't be an operand of another comparison expression. 尝试在其中一个比较周围加上括号。 未来{},^ lib/blocs/movie_detail_bloc.dart:28:13:错误:未为 class“类型”定义运算符“<”。
这是我的代码部分=>
class MovieDetailBloc {
final _repository = Repository();
final _movieId = PublishSubject<int>();
final _trailers = BehaviorSubject<Future<Trailers>>();
Function(int) get fetchTrailersById => _movieId.sink.add;
Stream<Future<Trailers>> get movieTrailers => _trailers.stream;
MovieDetailBloc() {
_movieId.stream.transform(_itemTransformer()).pipe(_trailers);
}
_itemTransformer() {
return ScanStreamTransformer<int, Future<Trailers>>((trailer, int id, index) {
debugPrint(index.toString());
trailer = _repository.fetchTrailers(id);
debugPrint(trailer.toString());
return trailer;
},
Future<Trailers>{}, <---error line--
);
}
这是答案,这是有效的。
class MovieDetailBloc {
final _repository = Repository();
final _movieId = PublishSubject<int>();
final _trailers = BehaviorSubject<Future<Trailers>>();
int id= 0; //for emptyFuture
List<Trailer?> trailer = []; //for emptyFuture
Function(int) get fetchTrailersById => _movieId.sink.add;
Stream<Future<Trailers>> get movieTrailers => _trailers.stream;
MovieDetailBloc() {
_movieId.stream.transform(_itemTransformer()).pipe(_trailers);
}
_itemTransformer() {
return ScanStreamTransformer<int, Future<Trailers>>((trailer, int id, index) {
trailer = _repository.fetchTrailers(id);
return trailer;
},
emptyFuture(), //making an unimportant function for null safety
);
}
Future<Trailers> emptyFuture() async {
return Trailers(id, trailer);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.