Firebase working with input + output
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
"client_id": "576683162451-vf1g0qoge66lb3bmpsg4neckv4opovub.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "com.example.demoapp"
|
||||
"bundle_id": "com.oggauergemeindetrommler.app"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+79
-86
@@ -1,3 +1,4 @@
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'DetailPage.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
@@ -96,108 +97,100 @@ class UserDefinedItem extends StatelessWidget {
|
||||
|
||||
|
||||
|
||||
class NewsList extends StatefulWidget {
|
||||
const NewsList({Key? key}) : super(key: key);
|
||||
|
||||
class NewsList extends StatelessWidget {
|
||||
const NewsList({super.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 ListView(
|
||||
|
||||
children: [
|
||||
UserDefinedItem(
|
||||
title: 'Rosalia Kapelle',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Kirche der Marktgemeinde Oggau',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Die römisch-katholische Pfarrkirche Oggau steht abseits der Hauptstraße in einem ehemaligen ummauerten Friedhof in der Marktgemeinde Oggau am Neusiedler See im Bezirk Eisenstadt-Umgebung im Burgenland. Die der Heiligen Dreifaltigkeit und Simon Zelotes und Judas Thaddäus geweihte Pfarrkirche gehört zum Dekanat Eisenstadt-Rust in der Diözese Eisenstadt. Die Kirche steht unter Denkmalschutz.',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/e/e6/Oggau_Kirche2.JPG'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Gasthaus Monika',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Herzlich willkommen im Gasthaus Monika\nDas traditionelle Gasthaus Monika in Oggau am Neusiedler See steht bereits seit vielen Jahren für Gastfreundschaft. Vor über 80 Jahren wurde das Wirtshaus erbaut und stetig modernisiert. Mit der Übernahme im Jahr 1975 hat sich Familie Gmasz es sich zur Aufgabe gemacht, ihr Wirtshaus authentisch und traditionell weiterzuführen.\nDas freundliche und kompetente Team rund um Monika Gmasz, verwöhnt seine Gäste mit guter, bodenständiger Küche in gemütlicher Atmosphäre.\nIm Juni, Juli und August haben wir für Sie auch jeden Montag geöffnet.',
|
||||
image: Image.network('https://thumbor.apps.unitecms.io/unsafe/1400x0/https://ama-media.ams3.digitaloceanspaces.com/5f4e06d582ddc/a_pov81202.jpg'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Sebastiankeller',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Kulinarik - Spezialitäten von Sonja und Bernhard Landauer\nGemeinsam mit meinem Sohn Bernhard und unserem Küchenteam sorgen wir für besondere und vor allem regionalen und traditionellen, kulinarischen Genüsse. Mein Mann, Ossi Landauer und das Serviceteam ist um Ihr Wohl bemüht und lässt keine Wünsche offen.\nAuf der Speisekarte des Sebastiankellers sind neben Fisch, -Grill, -Sautanzspezialitäten viele saisonale Schmankerl und auch nicht alltägliche Gerichte wie „Gebackenen Fledermäuse“ (da ist das beste Teil vom Schweinsschlögl) oder „Geschmorte Rindswangerl“, zu finden.\nÜberwiegend werden regionale Produkte, zum Teil aus eigenem Anbau verarbeitet. So kommen die Brombeeren, Zwetschen, Quitten, Hollunder oder Kürbisse aus unserem eigenen Garten. Was an Früchten zu viel ist wird, kochen wir ein, wird zu Saft verarbeitet oder destilliert.',
|
||||
image: Image.network('https://10619-2.s.cdn12.com/rests/original/315_49137159.jpg'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Rosalia Kapelle',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Rosalia Kapelle',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Rosalia Kapelle',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
||||
),
|
||||
UserDefinedItem(
|
||||
title: 'Gemeinde Amt Oggau',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Gemeide Amt der Marktgemeinde Oggau. SPÖ regierend',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/a/a1/Oggau_am_Neusiedler_See_-_Gemeindeamt_%2801%29.jpg'),
|
||||
),
|
||||
|
||||
],
|
||||
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>;
|
||||
return UserDefinedItem(
|
||||
title: data['title'] ?? '',
|
||||
datum: (data['createdDate'].toDate().toString()).substring(0,10),
|
||||
description: data['description'] ?? '',
|
||||
image: Image.network((data['imageUrl'])),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
IssueList issueList = IssueList();
|
||||
|
||||
class IssueList extends StatelessWidget {
|
||||
final List<UserDefinedItem> _items = [];
|
||||
class IssueList extends StatefulWidget {
|
||||
const IssueList({Key? key}) : super(key: key);
|
||||
|
||||
IssueList({super.key});
|
||||
@override
|
||||
_IssueListState createState() => _IssueListState();
|
||||
}
|
||||
|
||||
void addUDI(UserDefinedItem udi) {
|
||||
_items.add(udi);
|
||||
}
|
||||
class _IssueListState extends State<IssueList> {
|
||||
final FirebaseFirestore firestore = FirebaseFirestore.instance;
|
||||
late Stream<QuerySnapshot> issueStream;
|
||||
|
||||
void removeUDI(UserDefinedItem udi) {
|
||||
_items.remove(udi);
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
issueStream = firestore.collection('Issues').snapshots();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final UserDefinedItem item1 = UserDefinedItem(
|
||||
title: 'Licht ausgebrannt',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Licht ist ausgebrannt in der Sebastianstraße',
|
||||
image: Image.network('https://api.ebsg.at/uploads/immo70/originals/objekt_809_oggau-am-neusiedler-see_7063_6021.jpeg',),
|
||||
);
|
||||
final UserDefinedItem item2 = UserDefinedItem(
|
||||
title: 'test2',
|
||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
||||
description: 'Gemeide Amt der Marktgemeinde Oggau. SPÖ regierend',
|
||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/a/a1/Oggau_am_Neusiedler_See_-_Gemeindeamt_%2801%29.jpg'),
|
||||
);
|
||||
//addUDI(item1);
|
||||
//addUDI(item2);
|
||||
return ListView(
|
||||
children: _items.map((item) => UserDefinedItem(
|
||||
title: item.title,
|
||||
datum: item.datum,
|
||||
description: item.description,
|
||||
image: item.image,
|
||||
),
|
||||
).toList(),
|
||||
return StreamBuilder<QuerySnapshot>(
|
||||
stream: issueStream,
|
||||
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>;
|
||||
return UserDefinedItem(
|
||||
title: data['title'] ?? '',
|
||||
datum: (data['createdDate'].toDate().toString()).substring(0,10),
|
||||
description: data['description'] ?? '',
|
||||
image: Image.network(data['imageUrl'] ?? ''),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -33,7 +33,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
Widget build(BuildContext context) {
|
||||
final List<Widget> widgetOptions = <Widget>[
|
||||
const NewsList(),
|
||||
login ? issueList: const Text(
|
||||
login ? const IssueList(): const Text(
|
||||
'Mängel (nur für angemeldete Benutzer verfügbar)',
|
||||
style: optionStyle,
|
||||
textAlign: TextAlign.center,
|
||||
|
||||
Reference in New Issue
Block a user