我正在与Flutter合作,我正在努力从树中删除一个Dismissible对象。以下是我的代码。我创建了一个存储在列表'newlist'中的自定义类。我似乎从List和setState()中删除了Dismissible对象,但它似乎不起作用。非常感谢任何帮助。
return new Dismissible(key: new Key("newlist"),
direction: DismissDirection.horizontal,
onDismissed: (DismissDirection direction) {
setState(() {
newlist.remove(newlist[index]);
print(newlist.length);
});
},
child: new ListTile(
leading: const
Icon(Icons.album),
title: new Text(newlist[index].amount),
subtitle: new Text(
newlist[index].name)));
})),
答案 0 :(得分:2)
我已经解决了它,使用项目名称+列出长度作为关键字。因为可能会有一些具有相同值的项目
return Dismissible(
key: Key(item.name + _paths.length.toString()),
onDismissed: (direction) {
setState(() {
_paths.removeAt(index);
});
// Show a red background as the item is swiped away
background: Container(color: Colors.red),
child: Container(child: new Texts().tallText(item.name)),
);
答案 1 :(得分:1)
我解决了。基本上,我为每个Dismissable使用相同的Key。这让Flutter认为我解雇的对象仍然存在。希望这有助于某人。
答案 2 :(得分:1)
是的,这仅是由于密钥。
String grp_id;
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child(users).child(uid); // user 1 uid
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot d : dataSnapshot.getChildren()) {
grp_id = d.child("grp_id).getValue();
fetchLocation(grp_id);
// Here i came to know the group of user 1
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
-错误
应该是:
void fetchLocation(String grp_id) {
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
Query query = db.child("locations").orderByChild("grp_id").equalTo(grp_id);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Here you get the locations of users of group
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});