You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bloc模式下ScanStreamTransformer初始化Future泛型<运算符报错求助

错误原因
  • 语法解析错误:Future<Trailers>{}的写法不符合Dart语法规则,编译器会将该语句识别为嵌套比较表达式:将Future和Trailers两个Type类型对象做<比较,再将结果和{}做>比较,因此触发两个报错
  • 写法误用:你误将类实例构造的写法和Map/普通对象声明的{}写法混用,Future类的泛型实例不能通过Future<泛型>{}的方式声明
修复方案

将报错行的Future<Trailers>{}替换为合法的Future<Trailers>类型初始值即可,可根据业务需求选择对应写法:

  1. 占位初始值为已完成的空Future:
Future<Trailers>.value(null),
  1. 占位初始值为携带默认Trailers实例的已完成Future:
Future<Trailers>.value(/* 你的默认Trailers实例,比如Trailers.empty() */),
  1. 占位初始值为未完成的空Future:
Completer<Trailers>().future,

修复后完整代码片段

_itemTransformer() {
  return ScanStreamTransformer<int, Future<Trailers>>((trailer, int id, index) {
      debugPrint(index.toString());
      trailer = _repository.fetchTrailers(id);
      debugPrint(trailer.toString());
      return trailer;
    },
    // 这里以已完成的空Future为例,可替换为你需要的初始值写法
    Future<Trailers>.value(null),
  );
}

内容的提问来源于stack exchange,提问作者androloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:06:03