类型 'List<BannerPic>' 不是类型 'List<String>' 的子类型

type 'List<BannerPic>' is not a subtype of type 'List<String>'

我正在调用一个 API,其中 return 有很多图片,我这样称呼它

Future<List<BannerPic>> _getGalleryBanner() async {
var data = await MainApi("url","", '', '', "getBannerImage");
var jsonData = json.decode(data);
var jsonParse = jsonData["data"];
List<BannerPic> bannerpic = [];

for (var u in jsonParse) {

  BannerPic bannerPic = BannerPic(
      u["number"],
      u["Picture"]
  );
  bannerpic.add(bannerPic);
}

return bannerpic;
}

我想把它放在轮播上,但我得到了这样的错误:

type 'List<BannerPic>' is not a subtype of type 'List<String>'

这就是我使用 api 反馈的方式

FutureBuilder(
                            future: _getGalleryBanner(),
                            builder: (context, snapshot) {
                              if (snapshot.hasData) {
                                return CarouselImages(
                                  scaleFactor: 0.7,
                                  listImages: snapshot.data,
                                  height: 300.0,
                                  borderRadius: 30.0,
                                  cachedNetworkImage: true,
                                  verticalAlignment: Alignment.bottomCenter,
                                );
                              } else {
                                return DecoratedBox(
                                    decoration: BoxDecoration(
                                      color: Colors.white,
                                      borderRadius: BorderRadius.circular(1.h)
                                    )
                                );
                              }
                            },
                          )

我想到了,因为它已经在列表形式上了,我可以直接使用它,因为它 return:

List<BannerPic> bannerpic = [];

但我不能使用它,因为它不是 type 'List<String>'

您必须从 API 获取图像 url。 试试这个代码

Future<List<String>> _getGalleryBanner() async {
 var data = await MainApi("url","", '', '', "getBannerImage");
 var jsonData = json.decode(data);
 var jsonParse = jsonData["data"];
 List<String> bannerpic = [];
 for (var u in jsonParse) { 
  bannerpic.add(u["Picture"].toString);
 }
 return bannerpic;
}

FutureBuilder(
                        future: _getGalleryBanner(),
                        builder: (context, snapshot) {
                          if (snapshot.hasData) {
                            return CarouselImages(
                              scaleFactor: 0.7,
                              listImages: snapshot.data,
                              height: 300.0,
                              borderRadius: 30.0,
                              cachedNetworkImage: true,
                              verticalAlignment: Alignment.bottomCenter,
                            );
                          } else {
                            return DecoratedBox(
                                decoration: BoxDecoration(
                                  color: Colors.white,
                                  borderRadius: BorderRadius.circular(1.h)
                                )
                            );
                          }
                        },
                      )

因为您需要 CarouselImages 的图像 URL 列表 *确保 u["Picture"] 包含图像 url.