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

This commit is contained in:
Schummi C
2023-04-27 16:32:11 +02:00
parent 6590e708c1
commit 163a8ac183
+117 -4
View File
@@ -94,9 +94,6 @@ class UserDefinedItem extends StatelessWidget {
} }
class NewsList extends StatefulWidget { class NewsList extends StatefulWidget {
const NewsList({Key? key}) : super(key: key); const NewsList({Key? key}) : super(key: key);
@@ -114,6 +111,122 @@ class _NewsListState extends State<NewsList> {
newsStream = firestore.collection('News').snapshots(); newsStream = firestore.collection('News').snapshots();
} }
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: newsStream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const Text('Loading...');
default:
final List<QueryDocumentSnapshot> documents = snapshot.data!.docs;
return ListView.builder(
itemCount: documents.length,
itemBuilder: (BuildContext context, int index) {
final Map<String, dynamic> data = documents[index].data()! as Map<String, dynamic>;
final DateTime createdDate = data['createdDate'].toDate();
final formattedDate = DateFormat('dd.MM.yyyy').format(createdDate);
return Dismissible(
key: Key(documents[index].id),
direction: DismissDirection.endToStart,
onDismissed: (direction) async {
await firestore.collection('News').doc(documents[index].id).delete();
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text("News wurde gelöscht"),
));
},
background: Container(
color: Colors.red,
alignment: Alignment.centerRight,
child: const Icon(
Icons.delete,
color: Colors.white,
),
),
child: UserDefinedItem(
title: data['title'] ?? '',
datum: formattedDate,
description: data['description'] ?? '',
image: Image.network((data['imageUrl'])),
),
);
},
);
}
},
);
}
}
/*
class NewsList extends StatefulWidget {
const NewsList({Key? key}) : super(key: key);
@override
_NewsListState createState() => _NewsListState();
}
class _NewsListState extends State<NewsList> {
final FirebaseFirestore firestore = FirebaseFirestore.instance;
late Stream<QuerySnapshot> newsStream;
@override
void initState() {
super.initState();
newsStream = firestore.collection('News').snapshots();
}
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: newsStream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const Text('Loading...');
default:
final List<QueryDocumentSnapshot> documents = snapshot.data!.docs;
return ListView.builder(
itemCount: documents.length,
itemBuilder: (BuildContext context, int index) {
final Map<String, dynamic> data = documents[index]
.data()! as Map<String, dynamic>;
final DateTime createdDate = data['createdDate'].toDate();
final formattedDate = DateFormat('dd.MM.yyyy').format(
createdDate);
return Dismissible(
key: UniqueKey(),
onDismissed: (direction) {
setState(() {
documents.removeAt(index);
});
},
child: UserDefinedItem(
title: data['title'] ?? '',
datum: formattedDate,
description: data['description'] ?? '',
image: Image.network((data['imageUrl'])),
),
);
},
);
}
},
);
}
}
*/
/*
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>( return StreamBuilder<QuerySnapshot>(
@@ -146,7 +259,7 @@ 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);