flutter - 尝试在 Flutter 的 StreamBuilder 中过滤 ListView.builder
问题描述
我是 Flutter 的新手,我正在尝试开发一个应用程序,所以 nom 在如何显示过滤后的 ListView.builder 时遇到了麻烦
这是小部件代码:
@override
Widget build(BuildContext context) {
print('Favorites');
return Container(
color: AppColors.hexToColor('F0F4F5'),
alignment: Alignment.topCenter,
child: Column(
children: <Widget>[
HeaderCity(),
Expanded(
child: Container(
padding: EdgeInsets.only(left: 16.0, right: 16.0),
child: Container(
child: StreamBuilder<CoworkingState>(
stream: Provider.coworkingBlocOf(context).streamCoworkingState,
initialData: CoworkingState(),
builder: (BuildContext context, AsyncSnapshot<CoworkingState> snapshot) {
return (snapshot.data.isLoading)
? CustomCircularLoader()
: ListView.builder(
padding: EdgeInsets.all(0.0),
itemBuilder: (BuildContext context, int index) {
if (snapshot.data.coworking.any((isFavorite) => true)){
return CoworkingCellDetail(
onTap: () {
Provider.coworkingBlocOf(context)
.selectCoworking(coworking: snapshot.data.coworking[index]);
Future.delayed(Duration.zero, () {
changeRoute(context, Routes.coworkDetail, false);
});
},
isFavorite: snapshot.data.coworking[index].isFavorite,
name: snapshot.data.coworking[index].name,
adress: snapshot.data.coworking[index].address,
phone: snapshot.data.coworking[index].phone,
hour: snapshot.data.coworking[index].openingHours,
urlImages: snapshot.data.coworking[index].imagesUrl,
onFavoriteTap: () {
Provider.coworkingBlocOf(context).removeFavorite(snapshot.data.coworking[index].id);
}
);
} return null;
},
itemCount: snapshot.data.coworking.length,
);
}),
),
),
),
],
),
);
}
所以现在这正在返回一个完整的列表,我只想显示项目isFavorite = true
解决方案
假设您的 isFavorite 数据类型是 bool,如果它是字符串,则将下面的 if 语句更改为此 snapshot.data.coworking[index].isFavorite.toString() == "true"
if(snapshot.data.coworking[index].isFavorite){
return CoworkingCellDetail(
onTap: () {
Provider.coworkingBlocOf(context)
.selectCoworking(coworking: snapshot.data.coworking[index]);
Future.delayed(Duration.zero, () {
changeRoute(context, Routes.coworkDetail, false);
});
},
isFavorite: snapshot.data.coworking[index].isFavorite,
name: snapshot.data.coworking[index].name,
adress: snapshot.data.coworking[index].address,
phone: snapshot.data.coworking[index].phone,
hour: snapshot.data.coworking[index].openingHours,
urlImages: snapshot.data.coworking[index].imagesUrl,
onFavoriteTap: () {
Provider.coworkingBlocOf(context).removeFavorite(snapshot.data.coworking[index].id);
}
);
}
推荐阅读
- python - URL 自动添加 - Django
- microsoft-teams - 在自定义应用程序中获取 Microsoft Teams Presence 状态
- python - 合并 Pandas Dataframes 平均值,其中两者都有值
- javascript - Lodash 从对象数组中获取移除的对象
- python - 计算两个预测的并集的交集
- sql - SQL - 根据前一行的值有条件地组合行
- aws-appsync - AppSync:管道解析器#return null 结果
- javascript - 在反应中结合两个对象,到目前为止没有成功
- uml - 分层状态机 (HSM) 操作的执行顺序
- gunicorn - 为什么我最新的 cloudrun 版本没有收到流量?