Flutter 如何使用Dissmissable从itembuilder中删除项目,并且该项目来自Firestore? @覆盖 小部件构建(构建上下文){ final textTheme=Theme.of(context).textTheme; 返回脚手架( 正文:StreamBuilder( 流:Firestore.instance .collection('用户') .document(widget.uid) .collection('列表') .snapshots(), 生成器:(上下文,快照){ return!snapshot.hasData ?中心(子项:循环压缩机指示器()) :ListView.builder( itemCount:snapshot.data.documents.length, itemBuilder:(上下文,索引){ DocumentSnapshot data=snapshot.data.documents[index]; 最终列表=snapshot.data.documents; 可驳回的回报( //免职 键:UniqueKey(), onDismissed:(解除方向){ 设置状态(){ //这就是我想要删除元素的地方 //快照.数据.删除(索引); }); }, 第二背景:容器( 儿童:中心( 子项:文本('Delete', 样式:TextStyle(颜色:Colors.white), textAlign:textAlign.start), ), 颜色:颜色,红色, ), 背景:Container(), 孩子:卡片( 儿童:中心( 子容器:新容器( 填充:新边缘设置。全部(32.0), 子:新列( 儿童:[ 新文本(数据['listName']), 新文本(数据['Description']) ], ), ), ), ), 方向:DismissDirection.endToStart, ); }, ); }, ), 整个目标是使一个卡片元素消失,并从Firestore中删除该项目 我想把每件物品都放在地图上,然后从地图上建立卡片。我不想这样做
感谢您的帮助,希望我们能一起解决:)Flutter 如何使用Dissmissable从itembuilder中删除项目,并且该项目来自Firestore? @覆盖 小部件构建(构建上下文){ final textTheme=Theme.of(context).textTheme; 返回脚手架( 正文:StreamBuilder( 流:Firestore.instance .collection('用户') .document(widget.uid) .collection('列表') .snapshots(), 生成器:(上下文,快照){ return!snapshot.hasData ?中心(子项:循环压缩机指示器()) :ListView.builder( itemCount:snapshot.data.documents.length, itemBuilder:(上下文,索引){ DocumentSnapshot data=snapshot.data.documents[index]; 最终列表=snapshot.data.documents; 可驳回的回报( //免职 键:UniqueKey(), onDismissed:(解除方向){ 设置状态(){ //这就是我想要删除元素的地方 //快照.数据.删除(索引); }); }, 第二背景:容器( 儿童:中心( 子项:文本('Delete', 样式:TextStyle(颜色:Colors.white), textAlign:textAlign.start), ), 颜色:颜色,红色, ), 背景:Container(), 孩子:卡片( 儿童:中心( 子容器:新容器( 填充:新边缘设置。全部(32.0), 子:新列( 儿童:[ 新文本(数据['listName']), 新文本(数据['Description']) ], ), ), ), ), 方向:DismissDirection.endToStart, ); }, ); }, ), 整个目标是使一个卡片元素消失,并从Firestore中删除该项目 我想把每件物品都放在地图上,然后从地图上建立卡片。我不想这样做,flutter,listview,dart,google-cloud-firestore,dismiss,Flutter,Listview,Dart,Google Cloud Firestore,Dismiss,感谢您的帮助,希望我们能一起解决:) 提前感谢!通过以下操作首先获取文档参考: 迭代如下:snapshot.data.documents然后snapshot.data.documents[i].documentID 那么这个, @override Widget build(BuildContext context) { final textTheme = Theme.of(context).textTheme; return Scaffold(
提前感谢!通过以下操作首先获取文档参考: 迭代如下:
snapshot.data.documents
然后snapshot.data.documents[i].documentID
那么这个,
@override
Widget build(BuildContext context) {
final textTheme = Theme.of(context).textTheme;
return Scaffold(
body: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('users')
.document(widget.uid)
.collection('lists')
.snapshots(),
builder: (context, snapshot) {
return !snapshot.hasData
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
DocumentSnapshot data = snapshot.data.documents[index];
final list = snapshot.data.documents;
return Dismissible(
// Dismissed function
key: UniqueKey(),
onDismissed: (DismissDirection direction) {
setState(() {
// This is where I would like to remove the element
// snapshot.data.remove(index);
});
},
secondaryBackground: Container(
child: Center(
child: Text('Delete',
style: TextStyle(color: Colors.white),
textAlign: TextAlign.start),
),
color: Colors.red,
),
background: Container(),
child: Card(
child: Center(
child: new Container(
padding: new EdgeInsets.all(32.0),
child: new Column(
children: <Widget>[
new Text(data['listName']),
new Text(data['Description'])
],
),
),
),
),
direction: DismissDirection.endToStart,
);
},
);
},
),
对文档的引用是这样的吗?snapshot.data.documents
onDismissed: (direction) async {
await Firestore.instance.runTransaction(
(transaction) async {
await transaction.delete(your doc ref here);
},
);
},