【发布时间】:2021-10-21 10:00:54
【问题描述】:
您好,我想在onTap 期间从我的List 中删除数据,但我无法这样做。
这是代码:
Widget buildUser(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index){
DocumentSnapshot user = snapshot.data.documents[index];
final style = _selectedBusStop.contains(ListClass(user.data['BusstopName'], user.data['location'].latitude.toString(), user.data['location'].longitude.toString()))
? TextStyle(
fontSize: 18,
color: Colors.blueAccent,
fontWeight: FontWeight.bold,
): TextStyle(fontSize: 18);
return ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(
user.data['image']
),
),
title: Text(user.data['BusstopName'], style: style),
subtitle: Text('Operating Hour: ' + user.data['OperatingHour'], style: style),
trailing:
_selectedBusStop.contains((ListClass(user.data['BusstopName'], user.data['location'].latitude.toString(), user.data['location'].longitude.toString()))) ? Icon(Icons.check, color: Colors.blueAccent, size: 26) : null,
onTap: (){
if(_selectedBusStop.contains(ListClass(user.data['BusstopName'], user.data['location'].latitude.toString(), user.data['location'].longitude.toString()))){
setState(() {
_selectedBusStop.removeWhere((val) => val == ListClass(user.data['BusstopName'], user.data['location'].latitude.toString(), user.data['location'].longitude.toString()));
print (_selectedBusStop);
});
}
},
onLongPress: (){
setState(() {
_selectedBusStop.add(ListClass(user.data['BusstopName'], user.data['location'].latitude.toString(), user.data['location'].longitude.toString()));
print(_selectedBusStop);
});
}
);
},
);
}
这是Class:
class ListClass{
String Bname;
String Blat;
String Blng;
ListClass(this.Bname, this.Blat, this.Blng);
@override
String toString(){
return '{${this.Bname}, ${this.Blat}, ${this.Blng}}';
}
}
知道哪里出错了吗?提前谢谢你。
更新
List _selectedBusStop = [];
_selectedBusStop 为空 List 并且在 LongPress 时,它将向 List 添加数据,在 onPress 时,如果数据已经存在于 List 中,它将删除数据。
【问题讨论】:
-
什么是 _selectedBusStop 以及它的初始化位置,我可以在 itemCount 和 builder 中看到您正在使用 snapshot.data.documents 但您正在从 _selectedBusStop 中删除它,请分享什么是 _selectedBusStop
-
更新了我的问题。谢谢。
标签: list flutter google-cloud-firestore