Eine App mit der Schüler Brötchen bestellen können
##WEB STARTEN flutter run -d chrome --web-port=5000 Firebase hat nur ausgewählte Ports für Web. Da diese bei jedem Start sich ändern im Debug Mode müssen wir den Port 5000 nutzen.
Es gibt eigentlich nur wenig Regeln. Commitet lieber wenig, dafür oft, anstatt selten und viel. So sparen wir uns Merge Konflikte. Außerdem wäre es gut, wenn wir nicht an der selben Datei arbeiten, Absprachen wären dafür gut.
Der Benutzer kann sich über Google durch Firebase anmelden. Siehe dazu googleSignInProvider.dart Klasse. Wenn ihr die Daten des Nutzer haben wollt, könnt ihr das wie folgt:
import 'package:firebase_auth/firebase_auth.dart';
...
var user = FirebaseAuth.instance.currentUser;
var profilbild = user.photoURL;
- Account balance wird oben in der AppBar angezeigt
- Der Benutzer kann Daueraufträge einrichten und beenden
- Alle Bestellungen des Nutzers werden angezeigt
- Nutzer kann Theme in Einstellungen wechseln
- Zahlungslink zu meinem PayPal
- Admin hat eigene Schaltfläche, wo er beispielsweise Guthaben aufladen kann
- Frontend entwickeln
- Firebase Datenbank aufsetzen
- Datenbankschema erstellen
- Bestellung wird in Bestellung-tabelle geschrieben, aber noch nicht in user_order (Hilfstabelle). Dafür müssen Bestellungen aber erstmal indiziert werden (Aufsteigende Bestellnummer bekommen)
- Front end Bestellungen mit Backend Bestellungen verbinden
final database = FirebaseDatabase.instance.ref();
Widget build(BuildContext context) {
final dailySpecial = database.child('/produkte/');
...
dailySpecial
.set({'normalesBroetchen': 0.3})
.then((value) => print("Erfolgreich geschrieben")) //Wird ausgeführt nachdem geschrieben wurde, sonst nicht
.catchError((onError) => print(onError));Gutes Video für Realtime Database
Queries werden am Anfang und Ende mit "/" geschrieben:
database.child('produkte');
database.child('/produkte/');
Beides funktioniert, lasst uns trotzdem auf eins einiges
Um Bestellungen abzuspeichern werden zwei Klassen verwendet. SingleOrder und WholeOrder. WholeOrder muss eine Liste aus SingleOrder übergeben werden. Die WholeOrder wird dann in WriteToDB.writeOrder übergeben.^
//Create SingleOrder List
List<SingleOrder> sol = [
new SingleOrder("normalesbroetchen", 3, 0.3),
new SingleOrder("kornerbroetchen", 1, 0.8)
];
//Create WholeOrder Object which sets userID and Value
WholeOrder wo = new WholeOrder(sol);
//Write Whole Order to DB
writeToDB().writeOrder(wo);-> writeOrder()
- bestellung wird erstellt
- Eintrag in user_order (Hilfstabelle) wird gemacht
changeUserBalance()wird ausgeführt- -> Balance Änderung wird in balance Tabelle gespeichert
- -> User Balance wird angepasst
