【问题标题】:ScanStreamTransformer in bloc pattern块模式中的 ScanStreamTransformer
【发布时间】:2022-01-03 20:23:16
【问题描述】:

我遇到过这个问题:

正在执行热重启... 将文件同步到为 x86 构建的设备 Android SDK... lib/blocs/movie_detail_bloc.dart:28:22:错误:比较表达式不能是另一个比较表达式的操作数。 尝试在其中一个比较周围加上括号。 未来{}, ^ lib/blocs/movie_detail_bloc.dart:28:13:错误:未为“类型”类定义运算符“

  • “类型”来自“dart:core”。 尝试将运算符更正为现有运算符,或定义“

这是我的代码部分 =>

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--
    );
  }

【问题讨论】:

    标签: android flutter mobile future bloc


    【解决方案1】:

    这是答案,这是有效的。

    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);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-09
      • 2011-07-02
      • 1970-01-01
      • 2014-05-19
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多