flutter - 如何修复“已关闭的 Dismissible 小部件仍然是树的一部分。” 颤振错误
问题描述
我正在构建一个带有可关闭小部件、firebase 和 StreamBuilder 的颤振应用程序,并出现以下错误“已关闭的可关闭小部件仍然是树的一部分。”
请找到以下相同的代码。
Expanded(
child: StreamBuilder(
stream: Firestore.instance
.document('/users/User1/Trips/${widget.tripId}')
.collection('TropDocs')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text("Loading....");
return ListView.builder(
itemExtent: 150.0,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
final item = snapshot.data.documents[index];
final itemID =
snapshot.data.documents[index].documentID;
final list = snapshot.data.documents;
return Dismissible(
key: Key(itemID),
// We also need to provide a function that tells our app
// what to do after an item has been swiped away.
onDismissed: (direction) {
// Remove the item from our data source.
//fBtDoc.deleteTraveldoc(item);
//Firestore.instance.collection('/users/User1/Trips/${widget.tripId}/TropDocs/').document('$itemID').delete();
setState(() {
list.removeAt(index);
});
// Then show a snackbar!
Scaffold.of(context)
.showSnackBar(SnackBar(content: Text("$item dismissed")));
},
// Show a red background as the item is swiped away
background: Container(color: Colors.red),
child: _buildlistitem(
context, snapshot.data.documents[index])
);
}
);
},
),
)
解决方案
可能,我迟到了,但我认为这对其他人会有所帮助。有同样的问题,甚至设置
key: Key(itemId[index]),
没用。然而,
key: UniqueKey(),
非常适合我