Flutter FutureBuilder传入异步函数报类型不匹配错误如何解决?
类型错误修复说明
报错原因
- Dart类型系统的提示差异非常明确:你传入的实参是返回Future的函数对象(类型为
Future<List<Uint8List>> Function()),而FutureBuilder的future参数要求的是Future实例对象(类型为Future<List<Uint8List>>?),二者类型完全不匹配。你之前误以为类型一致,是混淆了函数本身和函数执行后的返回值。 - 额外隐藏问题:你当前给
builder参数直接传入了SizedBox实例,而builder要求传入的是签名为Widget Function(BuildContext, AsyncSnapshot<List<Uint8List>>)的回调函数,后续也会触发类型错误。
修正后代码
FutureBuilder<List<Uint8List>>( // 匿名函数末尾加()执行,拿到返回的Future实例 future: () async { return <Uint8List>[ (await rootBundle.load(Res.sign_wangwenshuo)) .buffer .asUint8List(), (await rootBundle.load(Res.sign_welai)) .buffer .asUint8List(), ]; }(), // 按要求传入builder回调函数,处理不同加载状态 builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) { final signImages = snapshot.data!; // 此处替换为你自己的业务渲染逻辑 return Row( children: signImages.map((img) => Image.memory(img)).toList(), ); } // 加载中状态占位 return const CircularProgressIndicator(); } )
内容的提问来源于stack exchange,提问作者guo deqing
相关产品推荐
相关产品推荐

