繁体   English   中英

块模式中的 ScanStreamTransformer

[英]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“类型”定义运算符“<”。

  • “类型”来自“飞镖:核心”。 尝试将运算符更正为现有运算符,或定义“<”运算符。 Future{}, ^ 在 850 毫秒内重新启动应用程序。

这是我的代码部分=>

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM