Vorhandene News können mit swipe nach rechts gelöscht werden

This commit is contained in:
Schummi C
2023-05-04 15:30:21 +02:00
parent 9621a489fd
commit fe448299cb
+30 -4
View File
@@ -118,7 +118,6 @@ class NewsList extends StatefulWidget {
@override @override
_NewsListState createState() => _NewsListState(); _NewsListState createState() => _NewsListState();
} }
class _NewsListState extends State<NewsList> { class _NewsListState extends State<NewsList> {
final FirebaseFirestore firestore = FirebaseFirestore.instance; final FirebaseFirestore firestore = FirebaseFirestore.instance;
late Stream<QuerySnapshot> newsStream; late Stream<QuerySnapshot> newsStream;
@@ -140,6 +139,14 @@ class _NewsListState extends State<NewsList> {
.snapshots(includeMetadataChanges: true); .snapshots(includeMetadataChanges: true);
} }
Future<void> _deleteNews(String newsId) async {
try {
await firestore.collection('News').doc(newsId).delete();
} catch (e) {
print('Error deleting news: $e');
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>( return StreamBuilder<QuerySnapshot>(
@@ -158,15 +165,32 @@ class _NewsListState extends State<NewsList> {
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
final Map<String, dynamic> data = final Map<String, dynamic> data =
documents[index].data()! as Map<String, dynamic>; documents[index].data()! as Map<String, dynamic>;
final DateTime createdDate = final String newsId = documents[index].id;
data['createdDate'].toDate(); final DateTime createdDate = data['createdDate'].toDate();
final formattedDate = final formattedDate =
DateFormat('dd.MM.yyyy').format(createdDate); DateFormat('dd.MM.yyyy').format(createdDate);
return UserDefinedItem( return Dismissible(
key: UniqueKey(),
direction: DismissDirection.endToStart,
onDismissed: (direction) {
_deleteNews(newsId);
},
background: Container(
color: Colors.red,
child: Align(
alignment: Alignment.centerRight,
child: Padding(
padding: EdgeInsets.only(right: 16),
child: Icon(Icons.delete, color: Colors.white),
),
),
),
child: UserDefinedItem(
title: data['title'] ?? '', title: data['title'] ?? '',
datum: formattedDate, datum: formattedDate,
description: data['description'] ?? '', description: data['description'] ?? '',
imageUrl: data['imageUrl'] ?? '', imageUrl: data['imageUrl'] ?? '',
),
); );
}, },
); );
@@ -175,6 +199,8 @@ class _NewsListState extends State<NewsList> {
); );
} }
} }
class IssueList extends StatefulWidget { class IssueList extends StatefulWidget {
const IssueList({Key? key}) : super(key: key); const IssueList({Key? key}) : super(key: key);