I have faced this problem:
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. Try putting parentheses around one of the comparisons. Future{}, ^ lib/blocs/movie_detail_bloc.dart:28:13: Error: The operator '<' isn't defined for the class 'Type'.
Here is my code part =>
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--
);
}
Here is the answer, this is working.
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);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.