我想使用FutureBuilder来检查url是否是png图像,然后构建一个或两个图像(在列表中) . 但不知何故,当我打印它时,Future总是返回null ...
结果是应用程序总是使用两个CachedNetworkImages构建listview,这不是我想要它做的 . 如果URL是图像,它应该只使用该URL构建CachedNetworkImage,如果不是,则应该更改URL并构建包含2个图像的listview .
child: new FutureBuilder(
future: _getImages(widget.imgUrl),
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return new Text('Press button to start');
case ConnectionState.waiting:
return new Text('Awaiting result...');
default:
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
else {
print(snapshot.data);
if (snapshot.data == "image/png") {
return new SingleChildScrollView(
child: new CachedNetworkImage(
imageUrl: widget.imgUrl,
placeholder: new Center(
child: new AdaptiveProgressIndicator()),
),
);
} else {
return new ListView(
children: [
new CachedNetworkImage(
imageUrl:
widget.imgUrl.split('.png')[0] + '-0.png',
placeholder: new Center(
child: new AdaptiveProgressIndicator()),
),
new CachedNetworkImage(
imageUrl:
widget.imgUrl.split('.png')[0] + '-1.png',
)
],
);
}
}
}
}),
),
));
}
Future _getImages(String url) async {
await http.get(url).then((result) {
return result.headers['content-type'];
});
}
本文介绍如何使用Flutter的FutureBuilder来判断URL指向的文件是否为PNG图像,并据此构建不同的图像加载组件。当检测到有效PNG图像时,将仅加载该图像;若非PNG图像,则会更改URL并加载两个备选图像。
1406

被折叠的 条评论
为什么被折叠?



