Flutter中如何调用CachedNetworkImageProvider的list方法进入carousel pro

How to call CachedNetworkImageProvider's list method into carousel pro in Flutter

我想在 Flutter 轮播中使用带有 CachedNetworkImageProvider 列表的图像。

但是我收到了这种错误类型

你能帮忙解决这个问题吗?

编辑

  Widget build(BuildContext context) {
return Scaffold(
  backgroundColor: Colors.black,
  appBar: AppBar(
    backgroundColor: Colors.black,
    title: Text("Home"),
  ),
  body: ListView(
    children: [
      SizedBox(
        height: 200.0,
        width: double.infinity,
        child: Carousel(
          images: [
            //CachedNetworkImageProvider('https://cdn-images-1.medium.com/max/2000/1*GqdzzfB_BHorv7V2NV7Jgg.jpeg'),
            //CachedNetworkImageProvider('https://cdn-images-1.medium.com/max/2000/1*wnIEgP1gNMrK5gZU7QS0-A.jpeg'),
            getOtherUserPhoto(),
          ],
        ),
      ),
    ],
  ),
);

}

  Future<List<CachedNetworkImageProvider>> getOtherUserPhoto() async {

try{
  List<CachedNetworkImageProvider> _userPhotosWidgetList = [];
  final _userModel = Provider.of<OtherUserViewModel>(context, listen: false);
  List<String> _userPhotosList = await _userModel.getOtherUserPhoto();
  for(int i = 0; i < _userPhotosList.length; i++){
    _userPhotosWidgetList.add(CachedNetworkImageProvider(_userPhotosList[i].toString()));
  }

  return _userPhotosWidgetList;

}catch(e){
  print("Exception cause : " + e.toString());
  return null;
}

}

错误日志:

======== widgets库捕获异常================================ ======================= 以下 _TypeError 被抛出构建 Carousel(脏,状态:CarouselState#3294f): 类型 'Future<List>' 不是类型 'Widget'

的子类型

您不能将未来直接分配给列表,您必须等待响应,因此我们将使用这样的 FutureBuilder:

     SizedBox(
        height: 200.0,
        width: double.infinity,
        child: FutureBuilder<List<Widget>>(
            future: getOtherUserPhoto(),
            builder: (context, snapshot) {
              if (!snapshot.hasData) {
               return LinearProgressIndicator();
              }
              return Carousel(images: snapshot.data);
            }),
      ),

并且您需要更改函数类型,因为 CachedNetworkImageProvider 不是小部件,而是使用 CachedNetworkImage:

  Future<List<Widget>> getOtherUserPhoto() async {
  List<CachedNetworkImage> _userPhotosWidgetList = [];
   final _userModel = Provider.of<OtherUserViewModel>(context, listen: false);
  List<String> _userPhotosList = await _userModel.getOtherUserPhoto();
  for(int i = 0; i < _userPhotosList.length; i++){
    _userPhotosWidgetList.add(CachedNetworkImage(imageUrl: _userPhotosList[i].toString()));
  }
 return _userPhotosWidgetList;
}

getOtherUserPhoto() 符号中删除 Future