类型 '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.
我正在调用一个 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.