在if条件下,我只能在SliversList中返回ListTile吗



如果我要查看的用户的数据库部分中有特定内容,我将尝试仅在CustomScrollView中的SliversList中返回ListTile。我怎样才能做到这一点?我想做这样的东西:

CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildListDelegate(snapshot.data!.docs
.map((DocumentSnapshot document) {
final data = document.data() as Map<String, dynamic>;
String likesString = data["likes"].toString();
List<String> likesList = likesString.split(' ');
var likes = likesList.length - 1;

if(data['favsub'].toString().contains("test"){
return ListTile(
onTap: () => callChatDetailScreen(
context, data['name'], data['uid']),
title: Text(data['name']),
leading: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (context) => Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(32.0))),
backgroundColor: Colors.transparent,
child: Container(
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.scaleDown,
image: new NetworkImage(
data['url']))))));
},
child: Container(
width: 100,
height: 100,
decoration: new BoxDecoration(
shape: BoxShape.circle,
image: new DecorationImage(
fit: BoxFit.scaleDown,
image: new NetworkImage(data['url']))),
),
),
subtitle: Text(
likes.toString() + " Likes",
style: TextStyle(
fontWeight: FontWeight.bold,
color: getColor(likes)),
));
}
else{
//do nothing
}

}).toList()))
],
),

SliverChildListDelegate需要一个位置参数,即List<Widget>。您可以返回空的[]列表。

映射数据时,可以删除else状态。它会很好用的。此外,您可以传递空的SizedBox()或任何小部件来显示信息。

最新更新