Supabase für Flutter Entwickler - Authentifizierung, Datenbank und Speicher | Rahul Agarwal | Skillshare
Suchen

Playback Speed


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Supabase für Flutter Entwickler - Authentifizierung, Datenbank und Speicher

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Course Introduction

      1:09

    • 2.

      Why use Supabase

      5:23

    • 3.

      Create a new Project

      13:55

    • 4.

      Setup Auth Screen

      12:25

    • 5.

      Work on StartPage UI

      16:46

    • 6.

      Implement Signup and Signin

      10:25

    • 7.

      Sign out functionality

      5:16

    • 8.

      Deep link Integration

      5:15

    • 9.

      Setup Google Oauth

      7:09

    • 10.

      Implement Google Sign In

      12:00

    • 11.

      Working on the crud UI

      15:46

    • 12.

      Implementing Create functionality

      14:13

    • 13.

      Implement Read functionality

      9:03

    • 14.

      Filters and Modifiers

      14:25

    • 15.

      Implement Realtime Database

      7:12

    • 16.

      Update and Delete functionality

      10:59

    • 17.

      Enabling Row Level Security

      8:55

    • 18.

      Writing CRUD policies

      3:26

    • 19.

      Storage Configuration

      6:47

    • 20.

      Implement Upload Functionality

      16:57

    • 21.

      Fetch Uploaded Images

      17:17

    • 22.

      Delete Image Functionality

      6:54

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

48

Students

1

Project

Über diesen Kurs

"Supabase für Flutter Developers" ist der perfekte Ausgangspunkt für Anfänger, die lernen möchten, wie du die Supabase in ihren Flutter nutzen kannst. Supabase ist ein open-source, mit dem es leicht macht, deiner App leistungsstarke Funktionalität hinzuzufügen. Mit diesem Kurs wirst du lernen, wie du ein Supabase einzurichten, Benutzer mit E-Mail und Passwort authentifizieren sowie Google Sign-In sowie CRUD-Operationen in der Datenbank durchführen kannst, Sicherheit auf row-level implementieren und Dateien in den Speicher hochladen kannst.

Der Kurs ist so konzipiert, dass er einfach zu folgen ist, mit klaren Erklärungen und praktischen Übungen, die dir helfen, das zu verwenden, was du gelernt hast. Beginnend mit den Grundlagen des Supabase lernst du, wie du ein neues Projekt erstellst, die notwendigen Pakete installieren und dich mit der Supabase connect Von dort aus wirst du zur Benutzerauthentifizierung übergehen, wo du lernst, wie du ein grundlegendes Anmeldesystem für deine App erstellen kannst.

Sobald du die Grundlagen gemeistert hast, wirst du tiefer in die Funktionalität von Supabase's eintauchen. Du wirst lernen, wie du CRUD-Operationen in der Datenbank durchführen kannst, einschließlich der Hinzufügung, Aktualisierung und Löschung von Daten sowie der Implementierung von Sicherheit auf row-level wirst du lernen, mit der du kontrollieren kannst, wer auf bestimmte Daten in deiner Datenbank zugreifen und diese ändern kannst.

Darüber hinaus wirst du auch lernen, wie du Dateien auf den Speicher hochladen kannst, was für viele Apps eine wesentliche Eigenschaft ist. Du wirst lernen, wie du Datei-Uploads handhaben kannst, sie in der Cloud speichern, sie später abrufen und löschen.

Am Ende dieses Kurses wirst du ein solides Verständnis dafür haben, wie du Supabase in deinen eigenen Startup- oder Flutter verwenden kannst. Melde dich jetzt an und erne die Erstellung leistungsfähiger Apps mit Supabase und Flutter.

Meet Your Teacher

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Teacher

Hello, I'm Rahul. I am skilled in building cross platform application using Flutter. I am freelance developer as well as conduct workshops to share my knowledge with the community.

See full profile

Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. KURSEINFÜHRUNG: Wenn wir Flutter Developer wären, dann kennen Sie vielleicht Firebase. Firebase ist nicht die einzige Option auf dem Markt. Es gibt einen anderen Konkurrenten , der eine sehr gute Alternative darstellt, und er ist unter dem Namen Superbus bekannt. Superbus wird von Tag zu Tag beliebter und er erhält eine gute Resonanz von der Community. Das beste Merkmal ist der Open-Source-Charakter und das Preismodell. Start von Supply Base ist kostenlos und das kostenpflichtige Abo-Diagramm eine monatliche Pauschalgebühr für unbegrenzte Nutzung, anstatt nach Bedarf zu zahlen, was auf lange Sicht sehr kostspielig sein kann. Dieser Kurs richtet sich an Anfänger. Wir werden zunächst ein neues Supervisor-Projekt einrichten. Anschließend lernen wir, wie Sie die Anzeige mithilfe von E-Mail und Passwort zulassen und die Google-Anmeldung implementieren. Danach werden wir uns mit den Datenbank-Crud-Operationen befassen. Wir werden uns auch Datenbankänderungen in Echtzeit über Streams anhören . dann mit dem Konzept der Sicherheit auf Zeilenebene vertraut und erfahren Sie, wie Sie Richtlinien schreiben , um unsere App zu sichern. Und schließlich habe ich gelernt, Dateien in diesen Speicher hochzuladen und zu löschen. Am Ende des Kurses werden Sie in der Lage sein, mit all diesen Konzepten Ihr eigenes Traum-Startup aufzubauen mit all diesen Konzepten Ihr eigenes Traum-Startup , und wer weiß, es kann das nächste große Ding in der Technologiebranche sein. Also, ohne noch mehr Diamanten zu verschwenden, fangen wir an. 2. Warum Supabase verwenden: Hallo, willkommen zum allerersten Video des Kurses, in dem wir lernen, wie man überwachte Datenbanken mit Clutter-Technologie verwendet. Also, was ist Superbus? Superbus ist eine leistungsstarke Open-Source-Back-End-Plattform in Echtzeit, mit der Web- und einfach erstellt und Mobilanwendungen einfach erstellt und skaliert werden können. To biowaste basiert auf Postgres Sequel, einer leistungsstarken SQL-Datenbank, die es einfach macht , mit komplexen Datenstrukturen und Beziehungen zu arbeiten . Es verfügt auch über eine integrierte Unterstützung für Authentifizierung, Autorisierung, serverseitige Logik und Speicher. Wildfire, das es schon seit geraumer Zeit gibt und über eine Vielzahl von Funktionen verfügt. Barbies ist also ein relativ neuer Akteur auf dem Markt, jedoch aufgrund seines Open-Source-Charakters bei Entwicklern schnell an Beliebtheit gewinnt aufgrund seines Open-Source-Charakters bei Entwicklern schnell an Beliebtheit . Es verfügt über integrierte leistungsstarke Funktionen und ist flexibel. Mit Superbus haben Sie die vollständige Kontrolle über Ihre Daten und Infrastruktur und können den Service an Ihre Bedürfnisse anpassen. In diesem Kurs konzentrieren wir uns darauf, Schritt für Schritt mehr über Authentifizierung, Datenbank, Sicherheit auf Zeilenebene und Speicher zu lernen , Datenbank, Sicherheit auf Zeilenebene und . Aber bevor wir dorthin übergehen, lassen Sie uns einige Punkte besprechen, warum wir Supervise gegenüber Firebase wählen sollten . Der erste Punkt ist SQL- und NoSQL-Datenbanken. Postgres-Folgedatenbanken sind besonders leistungsfähig, wenn es um komplexe Abfragen, Verknüpfungen und Filterung geht . Weil Daten in Tabellen organisiert sind, Definierte Beziehungen. In Supervise können Sie den Befehl join verwenden, um Daten aus mehreren Tabellen zu kombinieren , in denen Sie verwandte Daten in einer einzigen Abfrage abrufen möchten . Sie können Kommentare auch filtern und sortieren, z. B. where und orderBy, um bestimmte Teilmengen von Daten abzurufen. Im Gegensatz dazu kann das Tragen von Daten in NoSQL-Datenbanken wie Fire Basis schwieriger und weniger effizient sein. Firebase-NoSQL-Modell bietet nicht die gleiche integrierte Unterstützung für komplexe Abfragen, Verknüpfungen und Filterung. Daher müssen Sie möglicherweise Daten aus mehreren Dokumenten abrufen und diese Abfragen dann auf der Clientseite durchführen. Ein zweiter wichtiger Unterschied ist das Preismodell. Beide sind für Anfänger kostenlos. Das heißt, Sie können kostenlos loslegen. Superbus-Preismodell ist jedoch flexibler und kostengünstiger als Firebase. Überwachen. Bezahlte Tarifgebühren, eine monatliche Pauschalgebühr für eine unbegrenzte Anzahl von Benutzern, während Firebase die Gebühren je nach Benutzern und für mehr Benutzer höhere Kosten anfallen. Langfristig steigt die jährliche Nutzung, wenn Ihre Anwendung wächst. Der dritte Punkt ist dann der Import bereits vorhandener Daten. Wir würden sagen allgegenwärtig. Wir können ganz einfach eine CSV-Datei importieren oder eine Tabelle kopieren und einfügen , um das Projekt zu starten. Das ist großartig, wenn wir Daten von einer anderen Plattform auf Superbugs migrieren . Firebase bietet keine integrierten Dienste denen wir Massendaten direkt hochladen können. Möglicherweise haben Sie einige Pakete von Drittanbietern, ich weiß nicht, aber sie sind nicht eingebaut. Der nächste Punkt ist Self-Hosting. Viele Entwickler möchten möglicherweise eine selbst gehostete App. Warten Sie auf Sicherheitsgründe oder Skalierbarkeit. Wenn es um Self-Hosting geht, ist es laut Dan einfach. Firebase erlaubt uns nicht zu verkaufen, hat unsere App gezwungen. Nun, super Geschäft, wir haben Self-Hosting ist wichtig für dich. Dann ist Superbus die bessere Option. Dann. Der letzte Punkt ist kein Vendor-Lock-In. Wenn Sie einen cloudbasierten Dienst verwenden, ist es wichtig, das Potenzial einer Anbieterbindung zu berücksichtigen . Lieferantenbindung tritt auf, wenn Sie von einem bestimmten Anbieter, Forest Service, abhängig werden , was es schwierig oder kostspielig macht, was es schwierig oder kostspielig macht zu einem anderen Anbieter zu wechseln. Bobby's gibt uns also die Freiheit , jederzeit ohne zusätzliche Kosten zu einem anderen Anbieter zu wechseln . Dies ist jedoch bei Firebase nicht der Fall. Wir stecken für immer auf der Google-Plattform fest. Also entweder dürfen wir von Anfang an selbst hosten, oder nehmen wir an, Sie fangen mit Superbus an, aber später wollte ich die Plattform ändern , die auch in Superbase erlaubt ist. Aus diesen Gründen glaube ich auch, dass Superbus benutzerfreundlicher ist oder eher für Leute geeignet ist , die nicht riskieren möchten, die Firebase-Datenbank zu übernehmen und eine riesige Rechnung für Code oder einen Fehler in ihrer App zu erhalten . Denn da es in Firebase keine Pauschalgebühren gibt, können Ihre Ausgaben exponentiell steigen. Das ist es also. Ohne weitere Zeit mit dem theoretischen Teil zu verschwenden. Machen wir uns die Hände schmutzig und wir werden im nächsten Video mit der Arbeit an unserer Flatter-App beginnen. Danke. 3. Ein neues Projekt erstellen: Jetzt ist es an der Zeit, dass wir loslegen und ein neues Flatter-Projekt erstellen. Und ich gehe davon aus, dass Sie das Flutter SDK bereits in Ihrem System installiert haben . Gehen Sie zu Ihrem bevorzugten Ordner und schreiben Sie diesen Befehl, um ein neues Projekt zu erstellen. Erstelle Superbus. Das werde ich, ich werde den Ordner so nennen. Du kannst es nennen, wie du willst. Gehen wir rein. Es wird nur ein paar Sekunden dauern. Okay? Jetzt ist unser Projekt erfolgreich erstellt. Ich werde einfach schreiben, ich werde zuerst zu Flutter gehen. Das ist das zusammengeklappt. Schreiben Sie dann den Befehlscodebereich um diesen Ordner in unserem VS-Code-Editor zu öffnen. Sie können hier sehen, dass wir all diese Dateien und Ordner haben. Jetzt ist es soweit. Wir erstellen ein neues Superbus-Konto und verwenden diese Einstellungen dann in unserem Flatter-Projekt , um es zu verbinden. Gehen Sie einfach so zu supervise.com und melden Sie sich mit Ihrem Konto an. Ich habe mich bereits angemeldet. Jetzt können Sie hier sehen, dass ich kein Projekt habe. Also müssen wir zuerst ein neues Projekt erstellen. Es wird Ihre Organisation sagen. Wenn Sie sich also anmelden, können Sie auch eine Organisation erstellen. Ich werde den Projektnamen als Flutter, Super Base aufschreiben. Verwenden Sie ein beliebiges Passwort. Ich werde einfach schreiben, ein Passwort generieren. Das war's. Wählen Sie dann das Studium aus und welches Ihnen am nächsten ist. Ich werde einfach diesen wählen. Und ich werde damit beginnen, dass der Preisplan kostenlos ist. Okay, jetzt, neues Projekt erstellen. Nachdem Sie das Projekt erstellt haben, dauert es zwei bis 3 s, wie Sie sehen können, bis eine Datenbank erstellt ist, und wir erhalten unsere API-Informationen. Hier können Sie also sehen, dass ich auch die API-Schlüssel und die URL habe. Und Sie können die gleichen API-Details auch in diesem Abschnitt abrufen. Das ist später die Seite mit den Einstellungen, wenn Sie möchten, und gehen Sie zu dieser API in der Seitenleiste. Dieser. Jetzt werden wir diesen API-Schlüssel in der Flutter-App verwenden. Und dafür werde ich eine Abhängigkeit verwenden. Geh einfach hier in die Kneipe Dev, gleich zuerst, Superbus flutter. Dies ist die Abhängigkeit, die ich verwenden werde, um mich mit dw zu verbinden und sie zu kopieren. Gehe zu deinem Ordner und dann Pub spec dot YAML. Und ich werde es hier einfügen. Drücken Sie die Eingabetaste. Das nächste Paket, das ich möchte, heißt dot ENV. Dieses Paket wird verwendet, damit unsere Passwörter sensibel sind. Informationen werden nicht kompromittiert , da es nicht ratsam ist, direkt in die Benutzeroberfläche zu schreiben. Kopieren Sie es einfach und fügen Sie es ein. Das war's. Jetzt sind diese beiden Pakete installiert. Um das Punkt-ENV-Paket im Stammordner zu verwenden, müssen wir eine Datei mit nur der Erweiterung Punkt ENV erstellen . Vorname. Hier werden wir unsere Referenzen schreiben. Ich nenne es super base, URL ist gleich. Und zweitens hervorragende Möglichkeiten. K ist gleich. Gehen wir noch einmal zu Ihrem Dashboard. Sie haben diese URL hier, kopieren Sie sie und fügen Sie sie in die URL ein. Dann nochmal, geh und sieh nach, hier hast du öffentlich und keinen Schlüssel. Kopieren Sie es einfach und fügen Sie es in diesen Schlüssel ein. Das war's. Schließe einfach die Punkte ENV, wenn du es nicht willst. Schon wieder. Um sicherzustellen, dass unsere Anwendung auf diese ENV-Punkt-Datei zugreifen kann. Sie müssen es in den Vermögenswerten erwähnen. Das ist geh zu Pub Spec Dot YAML. Und unten hier in der Zeile 65 können Sie sehen, dass es kommentiert wird. Einfach zuerst unkommentierte entfernen. Hier. Auch hier ungewöhnlich der erste. Und rechter Punkt ENV. Und denken Sie immer daran, dass diese Pub-Spezifikations-Punkt-YAML-Datei sehr sensibel ist. Wenn Sie hier und da Tabulatoren oder Leerzeichen haben, wird ein Fehler ausgegeben. Das ist also auch erledigt. Jetzt ist es an der Zeit, dass wir unsere App initialisieren. Gehen Sie also zu Glied und Hauptpunkt. Und wir müssen den Superbus-Client in unserer Hauptfunktion mit den API-Anmeldeinformationen initialisieren unserer Hauptfunktion mit , die Sie zuvor kopiert haben. Das heißt, Sie haben in diesem Punkt die ENV-Datei erwähnt. Erstens, ja, das Superbasispaket hier importieren. Also importiere Punkt e. Und wir haben das gemacht, nicht ENV Schrägbuchstabe Punkt ENV, so. In der Hauptfunktion. Sorgt dafür, dass du es zu einem Waschbecken machst. Dann musst du diese starren Kommentare schreiben. Florida-Bindung. Stellen Sie die Initialisierung sicher, um sicherzustellen, dass alles initialisiert ist. Als erstes müssen wir ENV laden. Diese warten auf die Punkt-ENV-Punktladung. Dies ist der Befehl, der von diesem Paket gegeben wird. Dann müssen wir die Suppe immer initialisieren. Einfach zuerst erhalte ich die Superbasis-URL, das ist Punkt ENV, dann ENV. Und hier füge ich den Schlüssel hinzu, der so eine Basis-URL ist. Und wenn es null ist, benutze einfach diese leere Zeichenfolge. Und URL ist Kapital. Diese Dinge werden zu Fehlern führen. Dann füge ich es ein und ich füge die oben genannten Variablennamen hinzu, was der Schlüssel ist. Und das wird der Schlüssel sein. danach einfach auf Superbase und initialisieren Sie es nicht außer cURL. Das haben wir. Und das auch bei wichtigen Rehabilitationsmaßnahmen. Oh, okay. Wir haben diese Dinge. Es ist Zeit. Wir strukturieren unser Projekt in Ordner. Anstatt alles in diese Hauptpunktdatei zu schreiben, gehen Sie einfach ins Labor, erstellen Sie einen Ordner und nennen Sie ihn Seiten. Darin erstellen Sie zwei weitere Seiten. Es dient zum Verschieben von Punktdateien Startseite Punkt, Punkt und Startseite Punkt, Punkt. So wie das. Auf der Homepage. Importieren Sie einfach das Material. Dann blieb ich weniger starr. Und Homepage. Ich habe dieses Rigid innerhalb von Sekunden erstellt , indem ich hier einige Erweiterungen verwendet habe. Sie können diese Erweiterungen also auch hinzufügen. Ja, ich drehe wirklich Gap für den Körper, dann Const Center. Kind. Schreiben Sie einfach die Startseite. Wir werden diese Dinge natürlich später ändern. Also denke ich nur, warum ist diese Zeile hier? Okay, lassen wir es noch einmal. Gehe zu Startseiten-Import, meine TTL, dann Datum weniger starr. Nennen Sie es Start. Dann zurück, Gerüst, dann Körper, dann Mitte. Ich werde vorerst wieder einfach den Seitennamen schreiben. Es ist Dark Page. Das ist kein Wort, oder? Okay. Aber später müssen wir diese Konstante natürlich entfernen. Und jetzt wollen wir sehen, was in den späteren Videos passiert. Jetzt ist hier alles erledigt. Im nächsten Video werden wir am Authentifizierungsteil und den Seiten arbeiten . Das heißt, ich sehe mir das nächste Video an. 4. Einrichtung von Auth Screen: Hallo. Jetzt ist es an der Zeit, dass wir etwas über die Benutzerauthentifizierung in Superbus lernen . Gehe zur Hauptpunktdatei und entferne alles darunter, meine App. Lass es uns entfernen. Ich werde diese Kommentare auch entfernen , damit es sauber aussieht. Erstellen Sie nun ein neues Stateful-Widget und benennen Sie es. Das ist mit Based for Rigid und nenne es Kunst. Okay. Auf dieser Kunstseite zeigen wir nun den Benutzer an oder leiten ihn zur Umleitung weiter, je nachdem, ob der Benutzer je nachdem, ob der Benutzer bereits authentifiziert ist oder nicht. Das heißt, wir überprüfen nur, ob sich ein Benutzer bereits zuvor angemeldet hat oder ob es sich um einen neuen Benutzer handelt. Also das werde ich hier tun. Zunächst werde ich eine Super-Basisinstanz erstellen. Es ist ein blindes Beispiel. Nehmen wir an, Always Supervise ist gleich Superhighways Dot Instance Client. So nennen wir Funktionen, die von Superbus bereitgestellt werden. Danach. Also Lieferungen, Geschenke, unsere Renditen als Nutzer. Ich werde nur diese Benutzervariable haben. Denkt daran, das kommt von Superbus. Ich werde das später einfach diesem Benutzer zuweisen. Und jetzt werde ich hier einfach überprüfen, ob der Benutzer gleich Null ist. Dann erstelle ich diese Seite, die Dark Page ist. Ich habe diese Seite. Denken Sie daran im letzten Video oder auf der Homepage. Es ist ganz einfach. Ist es. Wenn der Benutzer bereits dort ist, melden Sie sich direkt an, melden Sie ihn auf der Homepage an, sonst wird er aufgefordert, sich anzumelden. Hier. Machen Sie diese Seite zur Startseite. Und jetzt unser Materiallabor. Das ist erledigt. Jetzt. Was wir tun werden, sind tolle Möglichkeiten, Geschenke, so wenige Funktionen wie möglich zu bekommen, das heißt, in den Nutzer zu kommen. Das ist der Befehl. Also Bobbys Punkt, Punkt ist in den Benutzer geraten. So nett. Befehl gibt ein Benutzerobjekt zurück. Okay, so einfach ist das. Lassen Sie uns nun die zukünftige Funktion erstellen. Offensichtlich. Es wird ein paar Sekunden dauern. Deshalb hat dieser Name Kunst bekommen. Ein Waschbecken. Ich hoffe, Sie wissen, dass all dieses grundlegende Konzept diese Zukunft genannt wird. Und weil diese für diesen Kurs erforderlich sind. Hier werde ich einfach angeben, dass dies diese Benutzervariable für diesen Befehl ist, es ist User dot, dot, current user. Und hier kannst du sehen, das gibt uns diesen Benutzer. Wenn Sie den Mauszeiger darüber bewegen, erhalten wir diesen Benutzer, er kann sowohl Null als auch einen Wert haben. Und danach wollen wir zuhören. Das liegt an unserem Staatswandel. Das heißt einfach, wenn sich der Benutzerstatus ändert, das heißt, sich der Benutzer abmeldet oder anmeldet, wird unsere Seite neu geladen. Das heißt, es könnte erneut an die Homepage oder die Startseite gesendet werden. Hier. Und hier. Sollen wir zuhören. Das ist die Veranstaltung. Und jetzt werden wir hier den Zustand festlegen erwähnen. User ist ein Aufruf an event dot session dot user, und dieser kann auch Null sein. Also, wenn es keins von beiden ist, dann weisen Sie einfach den Nullwert zu. Wenn du darüber schwebst. Siehst du, das ist Gaming als dieser Benutzer. Bedeutet also einfach, den aktuellen Benutzer zu bekommen. Sie können entweder unsere Dunkelstrom-Benutzerfunktion verwenden. Es gibt auch diese Funktion. Diese Sitzung. In der Sitzung können Sie die Benutzerdetails abrufen. Okay? Jetzt rufe ich diese Funktion im Init-Zustand auf. heißt, wenn dieser Bildschirm gerendert wird , müssen Sie, er, diese Funktion als Erstes aufrufen. Danach wird der Bildschirm entsprechend dem Benutzerwert zurückgegeben. Also haben wir das Ding bereit. Es ist Zeit. Wir führen die Anwendung aus. Und ich werde es auch einfach in den Namen Florida Superbus ändern . Und ich habe die Homepage gerade so wie diese Kunst. Okay, lass uns das später konstant machen. Wenn wir es wünschen, werde ich es ändern. Und ich werde auch diese Debug-Binärdatei entfernen. Jetzt führen Sie diese Anwendung aus. Sie können ein virtuelles Gerät verwenden, sind auch Ihr physisches Gerät. Sie können eine Verbindung über ein USB-Kabel herstellen und das Debuggen und Debuggen auf Ihrem Mobilgerät aktivieren . Aber ich werde einfach den Emulator verwenden. Geh hoch und Android Studio hier mehr Aktionen als Virtual Device Manager. Ich habe dieses Gerät bereits erstellt, aber Sie können von hier aus ein neues Gerät erstellen. Und siehe, ich verwende Pixel für API 30 und lese 11. Wir fangen einfach hier an. Wenn Ihr System nicht leistungsstark ist, wird Android Studio es meiner Meinung nach langsamer machen oder die Arktis wird hinterherhinken. Jetzt hast du dein Gerät hier. Und Sie können in diesem VS-Code sehen, mein Gerät jetzt aktiv ist. Ich werde einfach laufen und mit dem Debuggen beginnen. Zeit. Es dauert einige Zeit. Also musst du warten und Patienten haben. Ich möchte nur sagen, nehmen wir an, Sie möchten mehr über Authentifizierung, Funktionen und Terminologien erfahren , dann können Sie die offizielle Seite von Supervise besuchen. Hier erfahren Sie mehr über die aktuellen Benutzersitzungen und alles. Aber hauptsächlich gibt es wenige Dinge, nur wenige Keywords und ich finde, es ist ein sehr einfaches Englisch. Es sollte also nicht so schwer sein, sich daran zu erinnern. Es dauert einige Zeit, aber ich denke, wir müssen warten. Es gibt keine andere Option. Und sieh. Ich habe diese Warnung. Es ist nicht so, dass die App nicht läuft, aber ich habe hier diese Warnung, die Compiler SDK-Version zu ändern. Also werde ich dir zeigen , wie das gemacht wird. Aber wenn Sie diese roten Linien nicht sehen, ist das in Ordnung. Aber in meinem System habe ich das Upgrade durchgeführt. Aber wie Sie sehen können, wurde es erfolgreich gebaut. Ich weiß, dass es viel Zeit gedauert hat. Ich hoffe, Ihr System braucht diese Zeit nicht. Mal sehen, was als Start oder Home gerendert wird. Siehst du, wir haben diese dritte Seite hier. Also die App ist dann erfolgreich , das heißt, dass Superbus auch verbunden ist und es ist kein Add drin. Und ich werde dir auch nur sagen, wie du das lösen kannst. Schliessen. Ich beende nur die Anwendung. Dann. Gehen Sie zum Android-Ordner, dann zur App und dann zum Aufbau der Gradle-Datei. Hier. Sie werden den Basiswert 29 sehen. Diese kompilierte SDK-Version. SDK-Version nicht kompilieren. Ich werde einfach das Flattern entfernen und richtig, 33. Das war's. Und speichern Sie es. Und jetzt machen Sie es einfach noch einmal, bis sie mit dem Debuggen beginnen. Und ich hoffe, Sie werden hier keine roten Linien oder Warnungen sehen . Ich möchte nicht noch einmal warten, bis diese Anwendung ausgeführt wird. Wir sehen uns also im nächsten Video. 5. Arbeiten an StartPage UI: Hallo, willkommen zurück. Sie können also in der Debug-Konsole sehen, dass es nach der Änderung keine Warnungen gibt Der Compiler hat die SDK-Version veraltet. Es ist Zeit, dass wir an der Benutzeroberfläche der Startseite arbeiten. dieser Seite kann sich der Benutzer anmelden und registrieren. Das erste, was wir tun müssen, ist es zu einer staatlichen Vollversion zu machen. Weil wir natürlich mit vielen Staaten zusammenarbeiten werden. Und fangen wir an, unsere Staaten zu schreiben. Die erste Sache ist diese Superways-Client-Instanz. Also Bobbys Dotinstance-Dot-Client. Als Nächstes haben wir den booleschen Wert von E der sagt, dass er beim Laden zum ersten Mal falsch sein wird. Und eine andere ist, ist nicht, ist, dass ich einfach sign-up load loading schreibe, so, sign in loading, und hier wird signup loading sein. Das ist auch falsch. Dann melden Sie sich an und registrieren Sie sich für Steuerwale , die ich habe. Dieser Textbearbeitungscontroller ist das Konzept von Flutter. Und natürlich wird das Passwort per E-Mail auch da sein. Buscontroller entspricht x Everything Controller. Dann verwenden wir das Formular-Widget, das wir benötigen. Ein Schlüssel. Das ist nur Syntax. Sie müssen bedenken, dass diese niedrigen, voluminöseren Formen die Null angeben. Und ich werde immer daran denken, die Staaten zu entsorgen, die nicht alle sind, hauptsächlich Zweckinstanzen. Und das Bearbeiten der Decks und die Limonade, es gibt kein Speicherleck. K, nein, geh runter. Und er hatte am Körper, ich werde dieses Zentrum haben. Aber bei diesem Kind hat das Kind die Form Vision und die Bombe hat die Spalten k, c. Und ein Jahr ist ein obligatorischer Wert für K G, N hier, denn lasst uns das überprüfen. Ja, Foley ist da, okay. Konstanten sollten nicht da sein. Das war's. Das war das Problem hier. Sollte es nicht konstant sein. Nein. Wir werden diese Eigenschaften der Spalte verwenden , bei der es sich um das Haupt-Exist-Alignment handelt, also um das Alignment-Rechenzentrum. Kreuz x steht für Land, Bruttoüberschuss als Mittelpunkt und nicht zentriert. Das werde ich ja, du dehnst dich. Und ich werde dieses Formular verpacken. Welches einzelne Kind? Ansicht scrollen. Beim Tippen ist kein Fehler aufgetreten. Das heißt, wenn wir eine E-Mail eingeben, wird kein Passwort hinzugefügt. das UI sage, habe ich nur den Adder vergessen, aber wenn du das Single-Channel-Scrolling entfernst , bekommst du das. Lass es mich dir später zeigen. Nach diesem Forum. In dieser Kolumne werde ich einige Erläuterungen dazu geben . Als Erstes erhalte ich immer ein Netzwerk-Image. Gehen Sie einfach zu Google Images und servieren Sie das Superbus-Logosymbol. Ich werde einfach das Bild öffnen. Hier. Sind der Klebstoff. Lass uns das Bild kopieren und schauen, ob es Punkt-PNG ist oder nicht. Wissen. Dies könnte einige geben, da Sie kein Bild mit dieser Erweiterung haben sollten. Lassen Sie uns diese Bildadresse und Basis kopieren. Das ist mein Bild. Öffne einfach dasselbe Bild. Und jetzt wie die Bildadresse kopieren. Wenn ich es jetzt einfüge, sehe ich, dass es diese Erweiterung hat als PNG. Und ich habe wirklich gegeben. Hohe Höhe von 150. Speichern Sie es. Sie haben eine App, die läuft. Ich weiß nicht, was Stat Edit ist. Ok, es gibt ein Problem. Es ist ein solides Bild , dass das Netzwerk da ist. glaube ich nicht. Es sollte ein Fehler auftreten, aber ich habe gerade neu gestartet. Schon wieder. Ich ändere einfach das Bild. Wir werden Daten bekommen und wieder werden wir dieses Bild verwenden. B-Dur-Kleid. Das ist so lustig, dass man sich kein Bild machen kann. Mann. Und mal sehen, lass uns ein paar andere Sachen benutzen. Ich werde einfach ein paar andere Widgets und später Gene geben, dieses Bild, E-Mail-Feld, Passwort, Freund. Das nächste Feld. Und ich werde einfach ein Kästchen in der Größe verwenden und ihnen den Abstand geben. Und erhöhte Taste. Ich habe mich angemeldet. Lass uns sehen. Sind hier welche hinzugefügt? Ich werde es einfach beenden und es erneut ausführen. Wir haben diese Ausgabe hier. Das Logo, zwei Textfelder, eine beliebige Anmeldeschaltfläche. Ich werde hier auch einen Anmelde-Button haben und ich werde einfach Divider verwenden. Sei konstant. Dann. Geben Sie einfach eine Gliederungsschaltfläche und melden Sie sich für die Kindererziehung an. Das war's. Wir haben also das Gerüst und Mittelbettwäsche ist da. Okay. Lassen Sie uns nun das Textformular für das E-Mail-Feld so gestalten, dass es übereinstimmt. Ich werde den Validator verwenden , damit wir sicherstellen, dass er nicht eingereicht wird. Leer. Der Wert ist gleich Null. Der Wertpunkt ist leer. Wir kommen einfach zurück, ist erforderlich. Oder, wenn alles gut ist, gib einfach null zurück. Das heißt, es liegt kein Überprüfungsfehler vor. Dann haben wir den Controller als E-Mail-Controller. Deklaration. Und Dekoration aufstellen. Bezeichnung entspricht E-Mail und Tastatur Typ X, Eingabetyp Punkt, E-Mail-Adresse. Gehen Sie jetzt zum Bus für das Passwortfeld. Wir haben jetzt einen Validator. Wenn der Wert gleich Null ist und wenn der Wert leer ist, ist eine Rückgabe erforderlich. Rl. Also dreh den Controller, wir haben eine verwirbelte Controller-Dekoration. Dekoration, Limit entspricht Text, Schwert und Obskurve. X ist gleich wahr. Das heißt, der Benutzer sollte nicht sehen, was er tippt. Jetzt speichere es. Schauen Sie sich unsere App an und sehen Sie , dass sie anständig aussieht. Offensichtlich ist dies kein UI-Kurs. Unser Fokus liegt darauf, den Superbus zu lernen. In ihnen. Im nächsten Video werden wir lernen, wie man Anmelde- oder Anmeldefunktionen implementiert. Und Q. 6. Implementierung von Signup und Signin: Hallo, wir haben also unsere Benutzeroberfläche bereit. Jetzt ist es an der Zeit, dass wir dieses Zeichen der Funktionalität implementieren. Diese Superbus-Instanz hat also Kunst, wie Sie hier gesehen haben, die sich im main.out befindet. Die Funktion zur Partnerregistrierung. Die Syntax ist wie die Syntax. Super Wege nichts, Kunst, kein Anmelden. Und hier müssen wir E-Mail und Passwort senden. Das war's. Dies ist der erforderliche Listenindex. Und es wird uns sowohl die Sitzung als auch den Benutzer zurückgeben. Um dies zu implementieren, ist unser Anmelde-Button hier. Zuallererst überprüfe ich, ob dies die Anmeldung ist, die geladen wird . Ist da, dann die riesige kreisförmige Fortschrittsanzeige von Const Center . Das ist also die Fortschrittsanzeige oder sonst Lass uns zum On Press gehen und dieses Kind zu Konstanten machen. Jetzt müssen wir als Erstes überprüfen, ob das Formular gültig ist. Dies ist gültig und entspricht dem aktuellen Zustand des Bomben-Qi-Punkts. Verweile nicht darin. Als erstes müssen wir überprüfen, ob es gültig ist oder nicht. Und wenn ja, wenn es nicht korrekt ist, dann weisen Sie einfach den Wert Null zu. Jetzt haben wir eine If-Aussage. Wenn gültig, nicht gleich wahr, dann kehren wir einfach von hier zurück. Sonst schicken wir den State DOT. Das Laden der Anmeldung ist wahr. Ja, wir werden eine Ladeanzeige zeigen. Dann wickeln wir alles hinein, ein Try-Catch-Block. Lassen Sie uns jetzt seltsame Supermethoden ausprobieren. Punkt, Punkt, melde dich so an. Und hier für die E-Mail müssen wir E-Mail-Controller schreiben, keinen Text. Und für das Passwort den Passwort-Controller-Knotentext . Und danach gehen wir nur noch zum Boten, zur Snackbar. Erfolg. Für die Automatisierung. E-Mail gesendet, Hintergrundfarbe, Farben, dunkelgrün. Und das kann konstant sein. Und ich schätze, das erwartet Sie. Wir haben Domain-Tage an Press Sync. Danach senden wir uns Daten. Das Laden der Anmeldung entspricht falsch. Das war's. Was ist nun, wenn zusätzlich diese sorgfältigen Nachrichten hinzugefügt werden, die keine Kontexte enthalten, die Imbissbars mit Nachteilen belegen. Snackbar x werden wir uns nicht anmelden können? Keine Hintergrundfarbe. Die Farbe ist rot. A und wir müssen wieder destiniert auf false setzen, das heißt anmelden. Laden ist gleich falsch. Also hier versuchen wir zuerst, meine Zeit, die uns von Superbus gegeben wurde, zu registrieren . Und dann zeigen wir die Snackbar. Wenn es bestätigt ist oder wenn ja, wenn etwas hinzugefügt wurde, dann zeigen wir auch die Snackbar. Denken Sie daran, dass Superbus standardmäßig E-Mail-Überprüfung aktiviert die E-Mail-Überprüfung aktiviert. Wenn Sie die Superbus-Authentifizierung verwenden und diese Einstellungen aktiviert sind, müssen Ihre Benutzer ihre E-Mail-Adresse überprüfen , damit die Konten aktiv werden. Sie können es auch deaktivieren, indem Sie im Authentifizierungsbereich zur Option Einstellungen wechseln. Jetzt haben wir diese Anmeldemethode, kehren Sie einfach zurück, lassen Sie uns auch diese Anmeldung schreiben. Und danach werden wir es erklären. Ähnlich. Für die Anmeldefunktion. Das ist der Basics-Index , der super Wege ist, keine Kunst, kein schwaches Passwort wie dieses. Aber das ist dieser Index. Hier müssen wir eine E-Mail und ein Passwort angeben. Das ist eine Syntax. Unsere Anmeldung. Lass es uns machen. Lassen Sie uns diesen erhöhten Knopf hier haben. Ja. Lass es sinken. Das ist die Anmeldeschaltfläche. Nach dem Netz. Vieles wird ähnlich sein, als erstes werden wir überprüfen, ob das Laden der Anmeldung stimmt. Dann const center child. Cool. Fortschrittsindikator. Und danach kaufen wir gerne eine Ligase. Nochmals, kopiere auch. Warum Zeit verschwenden. Von hier nach hier. Lass uns alles kopieren. hier drinnen geblieben. Und jetzt lass uns sehen, alles überprüfen. Es wird sagen. Und beim Laden. In ähnlicher Weise wird dies die Unterzeichnung, die Anmeldung sein. Dann wird das, sagen wir, im Gewicht sein . Andere Dinge. Also sagen wir und wir benötigen das nicht, da es direkt auf die Homepage geht. Aber hier müssen wir uns nur anmelden. Und das war's. Das ist also erledigt und ich hoffe, es wird funktionieren. Wir haben sowohl die Anmeldung als auch die Funktionalität erfolgreich geschrieben . Im nächsten Video werden wir nun die Funktionsweise dieser Funktionen und auch das Design testen . Danke. 7. Funktionalität auszeichnen: Hallo, es ist Zeit, dass wir die Funktionalität testen. Schreiben wir eine E-Mail und das Passwort 12345 und klicken Sie auf Anmelden. Siehe Erfolgs-E-Mail, Bestätigungscent. Jetzt müssen wir zu dieser Google Mail-Adresse gehen und auf Bestätigung klicken. Lass uns Gmail n. Wenn du zum Authentifizierungsbereich gehst und neu lädst. Siehst du, wir haben diese E-Mail hier und sie ist zur Bestätigung geschrieben. Und hier müssen Sie einfach auf die Z-Disc klicken und Ihre E-Mail bestätigen. Und jetzt wird es nichts tun. Wenn wir jedoch den Authentifizierungsabschnitt neu laden, stellen Sie sicher, dass die Überprüfung abgeschlossen ist. Wenn wir jetzt gehen, haben wir die E-Mail und das Passwort schon da. Da wir nicht gesagt haben , dass dieser Status entfernt wird, können wir diese direkt testen, indem wir Funktionen zuweisen. Lass uns darauf klicken und sehen. Die Homepage ist geöffnet. Sie denken also vielleicht, wir navigieren nicht nach der Anmeldung, sondern nach der Anmeldung. Das heißt, wir haben dieses Schild hier. Wir navigieren nicht. Aber wenn wir hier zur Hauptdatei Punkt, Punkt gehen , hören wir uns die Änderung des Kunstzustands an. Und deshalb werden wir automatisch auf die Homepage geschickt. nun auf der Homepage Lassen Sie uns nun auf der Homepage eine einfache Schaltfläche haben um auch diese Abmeldung zu implementieren. Gehe zur Homepage. Hier. Lassen Sie uns wichtige NANDA-Materialautobahnen hinzufügen. Und ich bin jetzt direkt in der App, aber ich werde einen Button haben. Aktionen. Dann kann ich zuknöpfen. Ich kann sein, ich kann das nicht abmelden. Mach es konstant. Und auf Druck zuerst BAA, eine beaufsichtigte Instanz, zu implementieren . Der Kundenstamm von Batteries entspricht Bobbys Punkt-Instanz-Punkt-Client. Okay? Das ist Syntax. Hier. Es kann nicht konstant sein. Nun zur Syntax für Psi Naught ist wieder sehr einfach. Verknüpfen Sie Autobahnen, nicht, melden Sie sich nicht ab. Das war's. Das ist die einzige, die Ruhe genannt wird. jetzt, nachdem ich es gespeichert habe, Wenn ich jetzt, nachdem ich es gespeichert habe, zur App gehe und hier klicke, das ist die Abmelde-Schaltfläche, sollte sie uns zur Startseite weiterleiten. Es ist Startseite, sagen wir C. Jetzt werden wir auf die Anmeldeseite weitergeleitet. Unsere Anmelde-, Anmelde- und Abmeldefunktionen funktionieren also einwandfrei. Im nächsten Video lernen wir ein Konzept kennen, das als Deep-Linking bekannt ist. Danke. 8. Deep Link Integration: Hallo, willkommen zurück. In diesem Video werden wir an dieser Deep-Link-Integration in unserer App arbeiten. Wir haben also die E-Mail-Passwortauthentifizierung funktioniert. Lassen Sie uns Deep-Links einrichten , damit Benutzer, die sich über einen magischen Link oder extern angemeldet haben oder nicht, das heißt, Google oder Facebook, zu der App zurückkehren können , die Sie zu Ihrem Supervisor-Konto, dem Dashboard, wechseln müssen . Dann klicken Sie auf Authentifizierung. Ich kann dann auf URL-Konfiguration klicken. Hier finden Sie diese Steadies, Weiterleitungen, URLs, URLs, die seltsame Anbieter weiterleiten dürfen. Nach der Authentifizierung. Klicken Sie einfach auf URL hinzufügen und klicken Sie mit der rechten Maustaste auf den io-Punkt. Super Möglichkeiten, dass meine App dann einen Doppelpunkt mit doppeltem Schrägstrich einloggt. Ich finde einen Rückzugsort, das war's. Und dann klicken Sie auf Domain hinzufügen. Siehst du, wir haben diese Weiterleitungs-URL hier. Sie können dies in meine Flutter-App und diesen Login-Rückruf umbenennen . Aber ich habe versucht, dieses Ding zu ändern, das io dot Superbus ist , und es hat mir eine Weile Zeit gegeben , Add umzuleiten. Wenn Sie möchten, können Sie es selbst ausprobieren und verschiedene Namen angeben. Der nächste Schritt für Deep Linking besteht nun darin, etwas Code hinzuzufügen. Im Ordner Android und iOS. Du kannst einfach der Superbus-Dokumentation nachlesen das Playing-C einrichtest. Wir haben diese Weiterleitungs-URL hier hinzugefügt, sie verwenden den Flatter-Schnellstart. Ich habe danach den Namen für Android geändert, die Android-Apps-Quelle und AndroidManifest.xml hinzugefügt. Also lass uns dorthin gehen. Die Android-App-Quelle bedeutet AndroidManifest.xml. Und unter diesem IntentFilter müssen wir dieses Ding kopieren. Okay, kopiere einfach den mittleren. Geh da hin. Und hier oben ist das die Abschlussaktivität. Einfach einfügen. Hier, ändere das Schema. Das ist deine Reloaded My App. Und der Host ist derselbe, das ist Login-Callback. Wir sind zurückgekehrt, okay. Die Sache, wir müssen nichts tun. Jetzt für iOS. Wir müssen diese Änderungen vornehmen. Das ist der Schlüssel. Ich muss einfach dieses Ding über der End-Snare kopieren . Gehen wir zum iOS-Ordner. Dann. Führen Sie unsere Datei info.plist aus. Hier. In dieser Position. Einfach einfügen. Und noch einmal, ändere diese Zeichenfolge hier. Das ist meine Lot-App. Das war's. Zeitraum. Beenden Sie nach diesen Änderungen einfach Ihre Anwendung. Stellen Sie sicher, dass Sie alles speichern und es dann erneut ausführen , damit sich diese Änderungen in der Anwendung widerspiegeln. Das war's also für diesen Deep-Link. Im nächsten Video werden wir daran arbeiten, wie die Google-Anmeldung in unserer App implementiert wird. Danke. 9. Einrichtung von Google Oauth: Hallo, um die Google-Authentifizierung in unserem Projekt zu aktivieren. Zuerst müssen wir Google Art einrichten und diese Anmeldeinformationen abrufen. Öffnen Sie also einfach Ihren Browser, gehen Sie zu cloud.google.com, dann sind Sie standardmäßig bereits angemeldet. Wenn nicht, melden Sie sich einfach mit ihrem Google-Konto an und klicken Sie anschließend auf Konsole. Nun, ich habe dieses Projekt bereits, aber Sie werden es vielleicht nicht sehen. Vielleicht siehst du hier wie wähle das Projekt aus. Dann klicken Sie hier. Klicken Sie dann oben auf Neues Projekt erstellen. Einfach das Projekt benannt, ich werde seine Flut schreiben. Die Glühbirne ist. Okay. Dann klicken Sie auf Erstellen. Es ist schöpferisch. Wie Sie nun sehen können, wählen Sie einfach das neu erstellte Projekt aus. Jetzt können Sie hier sehen, dass Sie in Florida arbeiten. Armut ist also der nächste Schritt wir tun müssen, indem wir die Schlüssel für unser Projekt erstellen. In der Suchleiste. Geben Sie hier einfach oder AUD ein. Klicken Sie auf den Zustimmungsbildschirm. Wählen Sie dann diese Option extern unter Benutzertyp aus. Einfach laborextern. Klicken Sie auf Erstellen. Dann füllen Sie einfach dieses Formular aus. Ich werde nur sagen, dass es die Support-E-Mail von Purvey ist. Ich habe kein Logo. Domäne. Einfach auch hier. Ich denke, nichts anderes ist verpflichtend. Klicken Sie auf Speichern und Weiter. Als Nächstes müssen Sie Ihre Rückruf-URL finden. Wir müssen also jetzt nicht die Bereiche und OwlTest-Benutzer auffüllen , gehen Sie einfach zum Here Supervisor-Dashboard. Hier. Klicken Sie auf die Option Projekteinstellung und wählen Sie dann die Option API. Jetzt können Sie hier die Projekt-URL sehen. Triff diesen, kopiere ihn einfach. Und dann gehe wieder zur Google Console. Klicken Sie auf Anmeldeinformationen. Diese Option. Okay, ja, dann klicken Sie auf Create Credentials , um die OT-Client-ID auszuwählen. Jetzt wähle ich als Anwendungstyp einfach die Webanwendung. Da wir Android, iOS und Webmeeting haben. Jetzt wird der Name verschwommen sein. Super Webclient. Dann ist das wichtig für die autorisierte Weiterleitung, URI. Erste Basis, dies ist die, die Sie aus dem Superbase-Dashboard kopiert haben. dann am Ende daran, diese Zeilen hinzuzufügen, nämlich Schrägstrich und Punkt v1-Punkt-Callback. Dieses Ding, das musst du dir einfach merken. Und dann musst du diese Zeilen schreiben , damit sie zu unserer App umgeleitet werden. Und dann klicken Sie einfach auf Erstellen. Danach erhalten wir die Anmeldeinformationen. Kopieren Sie die Werte und fügen Sie sie hier ein, da Sie sie später benötigen. Danach gehen Sie einfach zur Authentifizierung. Also Bobby, weil wir es jetzt sind und wir werden diese Anmeldeinformationen hier verwenden. Klicken Sie auf Anbieter und suchen Sie dann nach Google. Und Sie können sehen, dass es nach einer Client-ID und einem Client-Geheimnis fragt . Das war's. Und sieh dir die Umleitungs-URL als Slash v1 Slash-Callback an. Kopieren Sie nun diese Client-ID. Staat hier. Kopieren Sie den geheimen Client-Status hier erneut und klicken Sie auf Speichern. Das war's. Wir haben alle Schritte abgeschlossen und die Google-Anmeldung für unser Projekt erfolgreich konfiguriert . Im nächsten Video werden wir sowohl an der Benutzeroberfläche als auch an der Implementierung arbeiten. Danke. 10. Google Sign In implementieren: Jetzt ist es soweit. Da alles erledigt ist, implementieren wir die Google-Anmeldung in unserem Flutter Lab. Lassen Sie uns zunächst die Schaltfläche auf der Startseite erstellen. Nach dieser Anmeldeschaltfläche. Einfach die Reihe. Dann haben wir Kinder. Und diese Kinder. Eine Klippe, die wir als Erstes haben werden ist die erweiterte Region. Und innerhalb dieser erweiterten Region werden wir eine Teilung haben. Das werden wir haben. Wie immer können Sie die Benutzeroberfläche nach Ihren Wünschen ändern. Für mich ist dies kein Tutorial über eine sehr gute Benutzeroberfläche, so etwas. Gensätze, die von Kindern stammen, werden den Text lesen. Und andererseits habe ich dieses erweiterte Sprichwort, ich will einfach dieses Ding. Der Benutzer weiß jedoch , dass er sich entweder mit seiner E-Mail-Adresse anmelden kann oder dass er sich direkt anmelden kann. Hier. Du kannst ihm einfach eine Konstante geben. Und ich werde den früheren Teiler entfernen. Dieser. Wenn du willst, kannst du es behalten. Ich will nur diesen einen Teiler hier haben. Und jetzt. Nach dieser Zeile dann Dramatiker, Gliederung, Schaltfläche, Symbol und drücken. Behalte es einfach so. Etikett. Sollen wir dann viel mit Google machen. Dann werde ich im Symbol ein Bildpunktnetzwerk haben. Ich verwende hier einfach ein Netzwerk-Image. Ich wollte es nur sehr einfach halten. Und auch die Höhe des Bildes wird D sein . Und googeln Sie einfach ein beliebiges Bild. Dann das Google-Logo transparent. Und ich kopiere einfach diese Bildadresse und füge sie hier ein. Speichern Sie es. Siehst du, es sieht anständig aus. Nun, um die Google-Anmeldefunktion zu implementieren. Lassen Sie uns zunächst eine neue Schaltfläche erstellen. Das ist kein Button , der ein boolescher Wert ist. Melden Sie sich bei Google an. Das Laden wird wie folgt als falsch bezeichnet. Gehen Sie dann zu dieser Gliederungsschaltfläche und schreiben Sie hier einfach, ob die Google-Anmeldung wahr ist Dann wird wie gewohnt die kreisförmige Fortschrittsanzeige angezeigt. Und wenn Sie sehen, dass das bereits vor Ort ist, machen Sie es zu einem Waschbecken. Und jetzt werden wir den Code schreiben. Das erste, was wir tun werden, ist den Status festzulegen. Das Laden der Google-Anmeldung entspricht „Wahr“. Dann haben wir diesen Try and Catch-Block. Dies ist eine Syntax, Syntax für Google. Loggen Sie sich ein. Und zwar sofort. Autobahnen mit einer Breite von bis zu 90 km/h, wie diese. Okay. Schreiben Sie in diesen Anbieter einfach den Anbieter. Siehst du, du hast viele Anbieter. Ich werde Google benutzen. Dann importieren sie wichtige Dinge direkt hierher. Wir müssen zuerst diesen Check machen. Das ist k ist Web, dieser. Ganz oben wird es also einen wichtigen Grundpunkt geben, Punkt. Das heißt, wenn es Web ist , dann tu es einfach nicht, das heißt, schreibe es nicht. Rls. Verwenden Sie die Umleitungs-URL, die io dot ist. Scoop immer. Mein Flatter, meine Flatter-App. Einloggen, Rückruf, so. Das ist, das war unser Schreiben, an das ich mich gerade in der Reihenfolge der Umleitungs-URL tief erinnert habe und so. Dies ist der einzige Code, der danach einfach in diesem Drag übernommen wurde , das ist Catch-Block, oder? Gerüst. Kontext-Bote, keine Snack- oder Snackbar-Inhalte anzeigen. Das nächste Ding, so. Wenn Sie möchten, können Sie die Hintergrundfarbe in L-Farben mit dunkelrotem Akzent ändern . Und stellen Sie den Status ein. Google-Anmeldung ist gleichbedeutend mit Falsch. Wir haben redundanten Code. Es ist Zeit, dass wir testen. Wenn ich gehe und hier zu unserer Authentifizierung und unseren Benutzern gehe, entferne ich diesen Benutzer einfach da ich die Google-Anmeldung mit demselben Benutzernamen verwenden werde . Jetzt. Lass es uns testen. Alles ist gerettet. Ja. wir mit Google fort. Es eröffnet ein Konto. Ja. Ich werde es wählen. Es hätte Regie lesen sollen. Lassen Sie uns sehen warum. Hier. Ich schätze, wir haben die Google-Anmeldung, aber sie wurde nicht umgeleitet. Muss hier ein Problem sein. Siehst du, es hätte hier wiedergewählt werden sollen. K Phi starte hier neu, nichts wird passieren. Gehen Sie einfach und entfernen Sie diesen Benutzer. Und geben Sie in den Mietverträgen eine URL-Konfiguration an. Mal sehen, was passiert, wenn ich diesen lokalen Host in den direkten Weiterleitungs-URLs der EU entferne . Lass uns sehen. Meine Vermutung. Das ist der richtige. Ich werde das Reh einfach nochmal schlagen. Speichern Sie es. Okay, lass es uns noch einmal versuchen. Sie mit Google fort. Und sieh. Ich schätze, Sie konnten nicht verstehen , was zu unserer App umgeleitet wurde. Aber ich lag da war dieses Problem. Ich entferne einfach den lokalen Host, Sie lokalisieren, aus den Redaktor-URLs. Und im Moment ist alles in Ordnung. Es funktioniert super. Sie können sehen, dass Google da ist? Nun ja, das ist es. Damit ist auch unsere Anzeige abgeschlossen. Ich hoffe es hat euch gefallen. Im nächsten Modul werden wir lernen, wie man die Datenbank in Super Base sowie Flutter in Queue verwendet . 11. Arbeiten an der crud UI: Hallo, willkommen zurück zu einem ganz neuen Video. Und jetzt ist es an der Zeit, etwas über Datenbanken in Superbus zu lernen. Superbus bietet eine webbasierte Benutzeroberfläche, mit der wir unsere relationale Datenbank einfach verwalten und mit ihr interagieren können wir unsere relationale Datenbank einfach verwalten und . Diese Schnittstelle bietet eine Vielzahl von Funktionen zum Erstellen und Ändern von Tabellen, zur Verwaltung von Daten und zum Ausführen von SQL-Abfragen. Also hier können Sie diesen SQL-Editor sehen, gehen Sie einfach dorthin. Die Sache ist in Supervision, Sie müssen Ihre Tabellen und Spalten im Voraus definieren weil Sie beginnen können, bevor Sie Daten in sie einfügen können. Dies liegt daran, dass Superbus auf der Postgres-Sequenz basiert , einem relationalen Datenbankmanagementsystem. Und es erfordert ein vordefiniertes Schema , um Daten zu speichern. Also hier, geh einfach dorthin, gehe zu diesem SQL-Editor. Oder wenn wir in die Datenbank gehen, sehen wir auch hier, wir haben dasselbe, eine neue Tabelle. Klicken Sie einfach auf neue Tabelle und geben Sie Ihnen nun eine Tabelle, einen Namen. Ich nenne es Aufgaben. Jetzt werde ich diese Sicherheit auf Zeilenebene vorerst deaktivieren und Echtzeit aktivieren. Denn natürlich werden wir auch lernen, wie man Echtzeitdaten verwendet. Unten sehen Sie nun, dass es zwei vordefinierte Spalten gibt. Das ist id und create a created at. Die ID ist echt. Generieren Sie die ID automatisch und überprüfen Sie, ob diese primäre ID ist. Jetzt hier. Klicken Sie einfach auf Spalte hinzufügen. Dann. Außerdem werde ich einen Titel schreiben und ihm Text geben. Das sagte ich. Und die zweite wird die Benutzer-ID schreiben weil wir den Benutzer natürlich auch speichern müssen. Und hier werde ich es benutzen. Als Nächstes können Sie es auch als Teaser verwenden. Supervised gibt diese Benutzervariable oder die Benutzer-ID jedoch als Zeichenfolge zurück. Deshalb verwende ich String. Und später müssen wir einige Änderungen vornehmen, oder du kannst auch sagen, konvertiere, dass wir es dieses Mal machen werden. Wir haben also die Spalte, wir haben den Namen und es wird in Echtzeit ausgeführt und dann klicken Sie auf Speichern. Oh Kay. Und wenn ich an den Tisch gehe, auch der Redakteur, sieh zu, dass wir unseren Tisch haben. Es ist zu verlieren. Ebenfalls. Ich verwende diesen neuen Emulator. Das heißt, ich habe mein echtes Gerät angeschlossen , weil Android Studio früher stark hinterherhinkte. Das ist der Grund. Erlernen von Crud-Operationen fortfahren, lassen Sie uns zunächst an einigen Abschnitten der Benutzeroberfläche arbeiten. Erstellen Sie eine neue Datei im Seitenverzeichnis. Dann spiel richtig. Erstellen Sie Seite, Punkt, Punkt und Punkt, Punkt. Okay? Also importiert der Vater auf der Create-Seite einfach Material und tötet es dann. Sie sind bei der Benennung der Seite vollständig starr geblieben. Dann werden wir wie immer als Erstes einen booleschen Wert verwenden, ausschließt gleich Falsch ist. Und wir werden den Controller erstellen, der alles braucht , denn wenn wir etwas erstellen, wird natürlich wenn wir etwas erstellen, ein nächstes Feld involviert sein. Und ich werde es Titel nennen. Controller entspricht x Editing-Controller. So wie das. Jetzt geben Sie einfach eine Gerüststange zurück. Ich kaufe Anleihen. Erstellen Sie als Nächstes Daten. Dann im Körper, indem Sie starre Bindungen und Erkenntnisse hinzufügen starre Bindungen und Erkenntnisse , dass 15 und dieses Kind eine Säule haben. Lassen Sie uns diese Kinder streiten. Und sagen wir X3. Und da nur ein Text das Veröffentlichungsdatum hat, verwende ich dieses Formular nicht und lasse dieses Textformular fehlschlagen Fremdschlüssel. Auch hier ist es wirklich einfach. Wie die Dell Controller-Deklaration, Const , input, declaration, int x. Der Titel und der Rahmen. Geben wir ihm einen Rahmen, der eine Kontur im Startrahmen ist. K. Danach TextField. Geben Sie mit Hilfe seiner großen Schachtel etwas Abstand. Ich, dann erhöhte Schaltfläche, Erstellen und mache es konstant. Okay. Wir werden diese Seite erstellen haben und sie werden sie auf jeden Fall auf unserem Gerät sehen. Aber zuerst erstellen wir auch unsere Bearbeitungsseite. Dies ähnelt dem Erstellen einer Seite, einzige Unterschied besteht jedoch darin, dass wir Daten akzeptieren und die Daten zuweisen. Controller für die Textbearbeitung. Geh einfach hier hin. Material importieren. Stattliche, starre Bearbeitungsseite. Hier. Diesem Konstruktor werden wir zwei Dinge akzeptieren. Letzte Zeichenfolge, data, final int, id. Und dann akzeptieren wir es einfach so, wie es diesen Datensatz bearbeitet hat . Das war's. Jetzt wie immer das Gleiche. Boolean is loading ist gleich false. Controller bearbeiten. Der Controller wird den X-Editing-Controller so ausführen. Und jetzt, im Ausgangszustand, werden wir sagen, werden wir sagen dass ich ihnen einen Datenwert gegeben habe. Das Token Cooler, Slag, Rigid, Small W, Rigid, keine Daten wie diese. wir danach Gehen wir danach zu unserer Create-Seite und kopieren Sie einfach dieses Gerüst. Gerüst. Wir haben hier. Jetzt. Es werden Daten hinzugefügt. Sie werden kontrollieren, ist da. Das wird ein Date sein. Das ist ein Date. Ich denke nur nach. Was können wir tun? Okay, lass es uns hier so machen. Wenn is loading gleich wahr ist. Wenn der Ladevorgang wahr ist, tut mir leid, ausgeglichen, Mitte, Jane, kreisförmige Fortschrittsanzeige. Oder ich habe eine Kolumne. Bei dieser Kolumne sagen wir, Kinder bleiben auf den Bürgersteigen. Gewicht, Doppelpunkt, Unendlichkeit, Höhe. Aber ich erstelle hier nur den Update-Button. Nicht viel. Es ist, als würde man ihm einfach die volle Breite geben. Erhöhte Taste beim Drücken. Und das Kind wird am nächsten Tag weg sein. So wie das. In dieser Spalte. Das ist, nachdem das Größenfeld Hilfe eines Felds mit einer anderen Größe einen gewissen Abstand ergibt. Ich dann und dann ein Teiler. Und zum Schluss noch eine Schaltfläche nur für diesen Löschzweck. Denn dieser Benutzer kann nur von dieser Seite löschen. Konst. Ich kann, ich kann mit dem Löschen beginnen. Dieses Label kann const sein. Als Nächstes löschen. Und damit Stil. Geben wir aber den Dan-Stil, die Hintergrundfarbe, meine TDL, den Staat, das Eigentum, den Punkt an. Dieser andere Code, an den Sie sich erinnern müssen , wurde nicht von mir gemacht. Und speichern Sie es. In einfachen Worten. Der einzige Unterschied zwischen den beiden Seiten ist, dass wir auch hier eine Schaltfläche zum Löschen haben. Speichern Sie einfach alles. Wenn Sie diese Seite einfach auschecken möchten. Okay, lass uns zu main.out gehen. Und statt Homepages senden Sie es, um eine Seite zu erstellen und zu speichern. Siehst du, das ist unsere Create-Seite. Und wenn wir Seite bearbeiten ausführen und es nach zwei Argumenten fragt, Zeichenfolge und Ganzzahl. String und sei hallo. Integer kann zwei sein. Wenn ich es speichere. Und Checkout-Seite. Siehst du, dieser Halo wird hier bereits zurückgegeben weil wir ihn im Init-Zustand zuweisen. Und dieses Update nimmt den ganzen Bildschirm ein. Dann haben wir diesen kleinen Teiler. Dies ist die Schaltfläche zum Löschen. Es sieht anständig aus. Lassen Sie uns es noch einmal auf früher ändern. Das ist die Homepage. Das ist es also. Im nächsten Video werden wir an der Home-UI arbeiten sowie an der Erstellung, Implementierung dieser Create-Funktionalität und Funktionalität. Und Q. 12. Implementierung von Funktionalität erstellen: Hallo. Jetzt haben wir Seite erstellen und Seite bearbeiten bereit. Es ist Zeit, an der Homepage zu arbeiten und Schaltflächen zu erstellen, um zu anderen Seiten zu navigieren, sowie am gesamten Inhalt zu arbeiten. Sehr selten werden wir die erstellten Daten abrufen und zeigen. Also geh zur Homepage. Hier. Lass uns da drin einen Titel geben, aber ich werde einfach schreiben. Übrigens ist die Ausstattung dann sehr top. Lass uns importieren, Seite erstellen, importieren, Seite bearbeiten. Fangen wir hier an, an der Leiche zu arbeiten. Und wir entfernen n. Wir werden einen Punktgenerator für die Listenansicht verwenden. Ich hoffe, du kennst all diese Widgets, denn das sind wieder die Grundlagen von Flutter. Ich habe eine Pistole. Und im Moment zeige ich nur ein paar Dummy-Daten. Und später werden wir diese Daten durch die von ihnen kommenden Daten ersetzen . Superbus, Item Builder, Text , Index, Zeichenfolge und Daten entsprechen Dummy-Daten. Und die Indexnummer. Wir werden diese Datenzeichenfolge anzeigen. Geben Sie dann Text im Listenstil zurück. Daten, dann Trailing. Lass uns eine Symbolschaltfläche haben. Und das Symbol wird eine Konstante haben. Ich kann, ich kann hier eine Anzeige starten, es wird sein, ich kann mit der Bearbeitung beginnen. Und geben wir ihm eine Farbe, Farben, Rot. Und lassen Sie uns vor Ort navigieren. Das ist Navigator Dot Push. Auf Decks. In diesem lauten Layout in meinem TBL-Seitenlayout wird Text und wir werden ihn an die Bearbeitungsseite senden. Daten bearbeiten ist einfach keine Datenvariable und Ideen, die indexieren. Die sind wieder nur Dummy. Und als Nächstes müssen wir einen kreativen schwebenden Actionbutton tun. Schwebender Aktionsknopf. Kind. Const, ich kann, ich kann rotzen, Brust hinzufügen. Und damit sind wir fertig. Wir werden zur Create Bridge navigieren. Navigiere ihren Punkt, drück. Meine tägliche Seite, Layout-Seite hier. Das war's. Speichern wir es und schauen uns die App an. Siehst du, es sieht gerade sehr anständig aus. Zweifellos handelt es sich um Scheindaten, aber es ist sehr einfach , sie einfach zu ersetzen. Da wir die Benutzeroberfläche jetzt fertig haben, ist es an der Zeit, dass wir daran arbeiten, diese Cred-Operationen zu erlernen, beginnend mit der Erstellung unserer Einfügedaten in Superbus. Gehen Sie also einfach auf Seite erstellen. Zuerst. Ich werde dir eine Syntax erklären. Um einen Datensatz einzufügen, ist die Syntax sehr einfach. Wir müssen schreiben, dass das eine Superhighways-Instanz ist, dass diese Client-Instanz. Dann von, von nimmt uns. Was ist ein Tabellenname, in den Daten eingefügt werden sollen? Hier? Einfach, nur z.B. wir haben Benutzer oder du kannst sagen, wir haben die Aufgaben. Dann ist der Befehl einfach, das heißt einfügen, einfügen. Und dieser Bereich. Dies ist ein zweites Argument , das Daten in Form einer Karte akzeptiert, unser Schlüsselwertpaar wie dieses. Nehmen wir an, wir haben dann einen Wert, den Mittelwert, dann das Datum, dann den Wert. So wie das. Dies ist die Syntax für das Einfügen. Und nehmen wir an, Sie möchten mehrere Datensätze gleichzeitig einfügen. Fügen Sie sie also einfach ein, indem Sie sie erwähnen. In einer Anzeige wie dieser. Dann wird es ähnlich eng werden, es wird einen solchen Value-Liefertermin geben. Auf diese Weise können wir mehrere Datensätze gleichzeitig einfügen. Nehmen wir nun an, Sie haben diesen Wert eingefügt und möchten , dass er sofort abgerufen wird. Dafür können wir, was wir tun können, eine Variable verwenden , bei der Theta gleich wait ist , wie diese. Und ganz am Ende fügen Sie einfach eine Punktauswahl hinzu. Hier. Es wird die eingefügten Daten abrufen. Das heißt, wir erhalten die Antwort in der früheren Methode, die direkt mit await ist , und ohne die Auswahl zu verwenden, gibt sie Null als Antwort zurück. Das war's. Das war's. Also haben wir es. Wir haben verstanden, wie man Daten einfügt. Jetzt ist es an der Zeit, diese Create-Funktionalität zu implementieren. Das Schlimmste ist, lassen Sie uns eine Supervise-Instanz erstellen , der diese Soup-Basis entspricht um diesen Instance-Startclient zu beaufsichtigen. Dann erstellen wir eine zukünftige Funktion. Fügen Sie Daten ein. So wie das. Das erste, was wir tun werden, ist das Laden zu erledigen. Dann werden wir den Code in einen Try-Catch-Block packen. Hier. Als erstes benötigen wir die Benutzer-ID. Und das können wir mit der Kunstmethode Superbus erreichen, dieser Art Current-Benutzer-Punkt-ID. Also heißt es jetzt , dass es Null sein kann. Da wir jedoch wissen, dass der Benutzer bereits authentifiziert ist, werden wir diesen Operator haben weil wir mit Sicherheit wissen , dass es einen Wert geben wird. Lassen Sie uns nun diese Syntax schreiben. Es ist von Todos Dot Insert. Nein Wert ist die Benutzer-ID dy del, del controller dot txt. Werden wir diese Idee verwenden? Okay, hier. Nachdem du das getan hast, war es mein Fehler. Und dann navigiere ich einfach und poppe. Das ist navigieren, gate the pop. Und jetzt lasst uns diesen Fang machen. Nur zu Debugging-Zwecken werde ich Daten mitbringen. Daten einfügen. Danke, Tage. Legt fest, dass der Ladestatus gleich Falsch ist. Und Scalp for Messenger zeigt keinen Inhalt der Snackbar an. Dann ging etwas schief. Lass diese Höhle fallen. Darin bin ich dran. Lassen Sie uns das entsorgen, ich sage dem Controller , Punkt entsorgen, Punkt entsorgen, beaufsichtigen. Es gibt also Natrium, es gibt kein Speicherleck. Hier. Verwenden Sie dazu einfach Ternary wie const, Center, Cooler, Progress Indicator. Und der Calder vor Ort. Fügen Sie Daten wie folgt ein. Das war's. Lassen Sie uns nun diese Funktionalität testen. Wenn ich auf ja klicke. Und wenn ich jetzt einfach Barbies schreibe und auf Erstellen klicke, dann ist es, das hat navigiert, dass Pop aufgerufen wurde. Gehen wir also zur Datenbank und aktualisieren sie. Siehst du, wir haben das Lernen der Daten überwacht, wir haben die Benutzer-ID. Das Einfügen von Daten funktioniert also einwandfrei. Im nächsten Video erfahren wir, wie diese Daten abrufen und in unserer App anzeigen können. Danke. 13. Implementieren von Funktionalität lesen: Da wir erfolgreich Daten eingefügt haben, werden wir jetzt lernen, wie man diese Daten abruft. Power-based bietet uns also eine ausgewählte Methode zum Abrufen von Daten aus einer Tabelle. Gehen Sie einfach zur Homepage. Ich werde einfach den Index schreiben, um Daten auszuwählen. Und hier ist es sehr einfach. Es ist super, wenn der Tabellenname verlieren soll und dann links heißt. Das ist also die Methode, die wir verwenden werden. Dadurch werden alle Datensätze von diesem Tag abgerufen und Sie verlieren. Ebenfalls standardmäßig. Powerbased gibt also maximal tausend Zeilen zurück. Offensichtlich sind es eine Menge Daten. Wenn Sie jedoch mehr verlangen, kann diese Einstellung auch geändert werden. Außerdem gibt diese Syntax alle Spalten zurück. Das ist ein vermuteter Name für die Angabe des Alters. Aber wenn Sie wollen, aber was ist, wenn wir nur eine bestimmte Spalte benötigen? Sagt nur den Namen aller Datensätze. Also hier schreibe ich einfach mal hier auch im Select. Es wird also nur die Titelspalte zurückgegeben. Das war's. Diese, diese beiden musst du dir merken. Es ist eine sehr einfache Syntax. Schreiben wir nun eine Funktion zum Abrufen von Daten. Es wird eine Zukunft sein, und am Ende wird es eine Liste geben. Nennen wir es die gelesenen Daten, und es wird eine Senke sein. Es ist sehr einfach. Schreiben Sie einfach. Das Endergebnis entspricht wait. Autobahnen von To-Dos. Wählen Sie diesen Satz nicht aus und geben Sie dieses Ergebnis zurück. Nichts Schickes. Da es sich um eine Zukunft im Körper handelt, werden wir einen Future Builder verwenden. Zuallererst werde ich das einfach ausschneiden, weil wir es einfügen werden. Die Zukunft wird die Zukunft. Dann hat es zwei Eigenschaften. Die Zukunft wird Lesen, Daten und Builder sein. Es gibt uns einen Kontext sowie einen Überblick über die Spüle. Das heißt, das sind die Daten, die aus der Somabasis stammen. Nun, hier werden wir zuerst schreiben, wenn Snapshot Dot Adder hat wenn Snapshot Dot Adder hat, falls etwas nicht stimmt, return center child, snapshot dot, dot two streams. Schreiben Sie das einfach direkt. Hier. Ich werde eine kreisförmige Fortschrittsanzeige für Kinder von Const Center zurückgeben. Deshalb befindet es sich im Ladezustand, den es abrufen möchte. Auf diesem Bildschirm wird eine Ladeanzeige angezeigt. Und was ist, wenn der Snapshot Daten enthält? Auch hier kommt diese Syntax von. Die Zukunft wird sich nicht regenerieren. Dies ist eine nicht weit entfernte Syntax. Wenn der Snapshot Daten enthält, nehmen wir an, der Supervisor hat etwas zurückgegeben, okay? Und es wurden keine Daten eingefügt. In dem Fall. Ich zeige einfach einem Rigid, wo es Return ist und wo es geschrieben steht. Keine Daten, jedes Etikett wie dieses. Und wenn die Länge größer als Null ist, geben Sie eine Liste zurück. Sehen Sie sich Punkt n hier an. Die Anzahl der Artikel wird aus Schnappschüssen, Punktdaten und Punktlängen bestehen. So viele werden sie kommen. Erstellen Sie einfach diese Anzahl von Widgets. Und der Gegenstand wird lernen. Es gibt Kontexte und Index. Index ist es. Und jetzt komme ich zurück zu dieser Listenansicht, okay? Ich werde den Artikel zurücksenden. In diesem Item Builder. Als Erstes werde ich eine Variable namens var data, snapshot data und diesen Index haben. Also erinnerst du dich , dass es auf der Karte steht. Dies ist ein Kartendatentyp. Jetzt brauche ich diese Dummy-Daten nicht. Anzahl der Artikel wird sein in Ordnung sein. Ich glaube, ich habe diesen Fehler hier gemacht. Ich muss die Listenansicht machen das einfach zu entfernen. Lassen Sie uns sehen, welche Daten es gibt. Jetzt denke ich, dass alles in Ordnung ist. Der Name der Spalte ist Titel. Und was wir senden, ist der, das ist ein Index. Es wird nur eine ID sein, nicht die Benutzer-ID. Denken Sie daran, denn id ist die Zeilen-ID, die wir hinzufügen möchten, und sie ist eindeutig. Benutzer-ID wird für alle seine Daten identisch sein. Kay? Mal sehen, ob es einen gibt, ob ein Fehler vorliegt oder alles perfekt funktioniert. Lerne beaufsichtigen, es kommt aus der Datenbank. Und es gab auch eine Ladeanzeige. Endlich sind wir in der Lage, sowohl Daten als auch Daten zu erstellen. Im nächsten Video werden wir einige weitere Dinge erfahren, wenn es um das Abrufen von Daten geht. 14. Filter und Modifikatoren: Hallo. In diesem Video lernen wir, wie wir unsere Daten filtern. Unsere App ruft also alle Daten ab. In den meisten realen Situationen möchten wir jedoch nur, dass der Benutzer seine eigenen Daten liest. Erlaubt uns, nur Zeilen zurückzugeben , die bestimmten Bedingungen entsprechen. Filter können auch mit anderen Methoden wie Auswählen, Aktualisieren oder Löschen verwendet werden mit anderen Methoden wie Auswählen, . Diese Dinge werden wir später aufführen. Lassen Sie uns nun einige Filter darin lesen oder verstehen. Diese erste, die wir hier verstehen werden, entspricht dieser, ruft alle Zeilen ab, deren Wert in der angegebenen Spalte genau dem angegebenen Wert entspricht. Einfach. Das dann so, das ist super weit weg. Nehmen wir an, wir haben diese Tabelle Benutzer genannt. Dann wählen wir hier aus, damit werden alle Benutzer abgerufen. Aber wenn wir.eq lesen, ist es gleich. Und das heißt, eine Namensspalte sollte diesem Wert entsprechen. Es wird also auf Lead diesen bestimmten Benutzer abrufen. Und dieser Name ist der Spaltenname der Todeszelle. Und das ist der Wert , der gleich sein sollte. Das entspricht also Filter ND. Denken Sie daran, dass das gleichbedeutend , naja, wir verbrauchen viel Zeit. In ähnlicher Weise haben wir auch nicht gleich filtern müssen. Es ruft Zeilen ab, deren Wert der angegebenen Spalte nicht übereinstimmt, entspricht diesem angegebenen Wert. Hier können wir also fragen, nehmen wir an, das ist eine Syntax aus den Benutzern Punkt und E, q ist gleich, sagen wir hier, Name, nicht gleich. Wirklich hilfreich. Abgesehen von dieser bestimmten Zeile wird also alles abgerufen. Manchmal benötigen Sie dies, dies hängt von Ihrer Anwendung ab. Dann haben wir dort tolle. Dann ruft der Filter alle Zeilen ab, deren Wert in der angegebenen Spalte größer als der angegebene Wert ist. Nehmen wir an, Sie möchten alle Benutzer, die älter als 18 Jahre sind. Die Syntax ist also so. Von Benutzern. Wählen Sie das Obige aus. Ich glaube, ich habe vergessen, hier die Aussage auszuwählen. Wählen Sie aus. Und dieser. Wir wählen nicht GT größer als den Spaltennamen. Werden wir altern? Der Wert ist 18, also würde der Wert dieser Zeilen nicht in 18 eingehen. Und andere Felder, die größer als sind, sind gleich. Für alle Zeilen, deren Wert in dieser Spalte mit dem Aufenthaltsdatum größer oder gleich den angegebenen Werten ist . Also einfach zB von Usern select.gt. Nehmen wir an, es gibt eine Follower-Spalte und bringen oder holen Sie einfach ihre Benutzer, deren Follower größer als 10.000, ungerade und größer oder gleich 10.000 Todesfällen sind . In ähnlicher Weise haben wir weniger als, das ist LTE weniger als oder gleich? Ich rutsche einfach hierher. Weniger als das ist d n weniger als gleich. Ähnlich wie LTE. Sie können es einfach mit demselben Beispiel verstehen. Also noch ein paar mehr. Das heißt, die Spalte entspricht einem Muster. Hier werden also alle Zeilen abgerufen, deren Wert unterstrichenen Spalte mit der von der Reihe angegebenen übereinstimmt. Und denken Sie daran, dass zwischen Groß- und Kleinschreibung unterschieden wird. Also dieser Fall schickt Dave, wir werden es wie super Möglichkeiten für Benutzer zur Auswahl schreiben. So wie hier. Wir werden die Namensspalte schreiben und was ist das für ein Muster? Widersetzen. Es sollte Lake, The Edge und Sub haben . Ich hatte diesen Namen. Der Felsen, er wird diesen Namen bekommen. Ich hoffe, Sie haben es mit diesem Beispiel verstanden. Und in ähnlicher Weise haben wir Spaltenübereinstimmungen mit Groß- und Kleinschreibung, wobei die Groß- und Kleinschreibung nicht beachtet wird. Wenn Muster. Hier wird es schön sein, sich zu trennen. Benutzer wählen aus. Ich, wie hier ist es unsensibel. Wenn du es in Kleinbuchstaben geschrieben hast, dann bringt es auch dasselbe. Als ob du einfach DAS in der unteren Zeile gesagt hast, es ist kein Großbuchstabe, dann wird auch diese Zeile gebracht. So wie das hier. Es gibt noch mehr, aber ich werde dir den letzten sagen. Diese Spalte in ist in der ADA, ist im Array. Es ruft also alle Zeilen ab, deren Wert in dieser Spalte entweder in der angegebenen Werteliste zu finden ist . Es ist so, als ob Super mit Benutzern beginnen kann, auswählen und dann NICHT IN. Und unterstreichen. Dann ist der Status entweder dort zu finden. Egal, ob dieser Wert offline oder online oder offline ist, online oder offline ist dasselbe. Wenn einer dieser Werte vorhanden ist, bringen Sie ihn mit. Ähnlich gibt es, es gibt nur wenige weitere Unterelemente, wie z. B. Spalte enthält, wobei jedes Element, das im Wertfilter enthalten ist, mindestens eine Bedingung erfüllt. hast du. Diese Dinge. Du kannst lesen. In der offiziellen Dokumentation können Sie über andere lesen. Moment werden wir uns mehr auf Gleichheit zwei konzentrieren. Und dann haben wir Modifikatoren. Es gibt Arbeit auf Zeilenebene. Sie ermöglichen es uns, Zeilen zurückzugeben, die bestimmten Bedingungen entsprechen , ohne die Form der Zeilen zu ändern . Modifikatoren sind alles, was nicht zu dieser Definition passt, sodass wir das Format dieser Antwort ändern können. Das heißt, aufsteigende, absteigende Grenzen und all diese Dinge. Denken Sie daran, dass Modifikatoren nach dem Filter angegeben werden müssen. Das heißt, wenn sich hinter diesen Punktmodifikatoren ein Filter befindet. Und lasst uns, lasst uns den Modifikator verstehen. Hier. Es ändert einfach die Reihenfolge der Antwort. Es sind super Wege, nicht von Benutzern. Wählen Sie aus. Hier fügen wir die Punkt-Spalte mit der Bestellnummer als Versand hinzu. Das Senden sollte nicht falsch sein. In der Standardeinstellung ist also aufsteigend wahr. Wir können es falsch machen. Und dann wird es in absteigender Reihenfolge kommen. Und dann müssen wir diesen Abfragemodifikator einschränken. Es begrenzt, wie viele Daten herkommen. Nutzer. Wählen Sie Limit aus. Bringen Sie also neue Daten ein, oder nehmen Sie an, Sie möchten sie als Analyse wie diese beenden. So ist es in Ordnung. Du kannst verstehen, dass es wie ein paar mehr sind. Rufen Sie die Abfrage als eine und alle Zeilen ab, aber das sind nicht unbedingt, diese beiden sind vorerst erforderlich. Es ist also an der Zeit, das, was wir jetzt gelernt haben, etwa drei Dutzend Modifikatoren, anzuwenden . Zu Beginn unserer App haben wir den gesamten Dub abgerufen, aber jetzt verwenden wir einen Filter, wir nur die von einem bestimmten Benutzer hochgeladenen Daten abrufen , die authentifiziert sind. Außerdem werden wir die Reihenfolge ändern und die zuletzt verstorbenen Spieler ganz oben anzeigen . Also lasst uns zuerst Master schreiben. Und noch eins. Versuchen wir zu verstehen, wo Sie vielleicht denken, warum es nicht angezeigt wird denn im Moment müssen wir es aktualisieren , weil es nicht in Echtzeit ist. Sehen Sie, jetzt, nach dem Neustart , werden uns die drei Daten angezeigt. Jetzt sind wir hier in der Zukunft. Hier funktioniert in Zukunft einfach nach Punkten der rechte Punkt gleich. Der Spaltenname ist die Benutzer-ID. Und die Benutzer-ID sollte den Nebenstraßen von Autobahnen entsprechen den Nebenstraßen . Die aktuelle Benutzer-ID wie folgt und die Bestellung sollte ID sein. Ascending ist gleich false. Wenn ich es jetzt speichere, hat es sich geändert. Jetzt. Wir haben die neuesten Daten oben. Ich hoffe, du hast heute viel gelernt. Im nächsten Video werden wir an der Echtzeitfunktionalität in der Warteschlange arbeiten. 15. Realtime Datenbank implementieren: Hallo. Jetzt können wir Daten hinzufügen, aber der Benutzer muss seinen Bildschirm neu starten , um die Änderungen zu übernehmen. Es ist keine gute Erfahrung. Wir werden also lernen, Streams anstelle von Futures zu verwenden , um Updates in Echtzeit anzuzeigen. Also, was ist Syntax zuerst, lassen Sie uns Ihnen eine Syntax zeigen, die eine Echtzeitdatenbank ist. Entweder können Sie das direkt verwenden, das sie beaufsichtigen. Punkt von dort aus nennen wir seinen Benutzer, nehmen wir an, dann stream, stream. Und denken Sie daran, dass Stream eine Liste von Primärschlüsselspalten als Argument verwendet. Es ist also primäres E erforderlich, und schreiben Sie einfach die ID. Okay, hier. Dann hör zu. Und in diesem Hörspiel erhalten wir eine Liste von Daten und Sie können mit diesen Daten machen, was Sie wollen. Tu etwas, okay, hier, in dir, in dir, du kannst etwas tun. Aber was ist, wenn Sie mit Stream Builder zuhören möchten? Mit dem Stream Builder können Sie es dann direkt hier zuweisen, wie folgt. Nehmen wir an, ein Stream ist da. Lass uns trimmen. Das Argument ist da. Und hier kannst du einfach Superhighways schreiben, die von Usern streamen. Das war's hier wie immer, Primärschlüssel. In diesem Fall Kapital. Ich will mich nur nicht aneinander anlegen. Das ist die Syntax. Wir werden diese Syntax verwenden , weil wir StringBuilder verwenden. Wenn Sie die Annahme auch im Init-Zustand direkt anhören möchten , dann können Sie die obigen Zeilen bis 15 implementieren. Das erste, was Sie tun müssen, ist zweifellos, dass wir hier direkt schreiben können. Aber ich werde es einfach in einen starren Zustand versetzen. Und hier werde ich eine Variable stream und lead schreiben , weil ich ihren Wert in jedem Zustand zuweisen werde. Und es hat diese Liste dynamischer Werte. Und wir schreiben einfach so einen Lesestream. Und dann, im Init-Zustand, werde ich den Readstream machen, entspricht Supervise Dot Forum. Um den Stream zu verlieren. Dort steht der Primärschlüssel mit der Frage, ich schreibe die ID. Dann ist die Spalte mit Punkt gleich der Benutzer-ID. Und der Wert wird überwacht oder es handelt sich nicht um die aktuelle Benutzer-ID. Und in ähnlicher Weise haben wir eine Modifikatorfilterspalte. Werden wir aufsteigend falsch identifizieren? Das war's. Wir haben diese Zeichenfolge. Und jetzt ändern wir das einfach auf drei Millimeter. Dies wird ein Stream sein und dies wird ein Lesestream sein. So wie das hier. Das war's. Starte einfach neu. Lassen Sie uns nun überprüfen, ob es funktioniert oder nicht. Nun, wenn Phi Sinus n, rechte Masse, was bleibt dann übrig? Okay, ich hatte dieses Problem mit den physischen Schlüsseln. Das ist kein Fehler, es ist auch nur ein Schlüsselwort. Sonst nichts. Wir machen es einfach so und klicken auf Erstellen. Dann sieh mal, acht wurde automatisch aktualisiert , da wir früher Streams verwendet Wir mussten die Anwendung aktualisieren oder neu starten. Offensichtlich ist das benutzerfreundlicher. Und für die meisten Anwendungen sind Stream-Slag-Messaging-Apps oder ähnliches erforderlich Stream-Slag-Messaging-Apps , Benachrichtigungen und so. Nun, ich hoffe, es hat Ihnen Spaß gemacht etwas über die Echtzeitdatenbank zu lernen. Im nächsten Video werden wir daran arbeiten, unsere Daten zu aktualisieren und zu löschen. Ich danke dir. 16. Aktualisieren und Löschen der Funktionalität: Jetzt ist es an der Zeit, dass wir lernen , wie man bestehende Daten aktualisiert. Der Supervisor stellt uns zur Verfügung, update my turn und sollte immer mit Filtern kombiniert werden. Gehen wir zur Bearbeitungsseite. Hier. Lassen Sie uns etwas über die Update-Funktionalität lernen. Die Syntax lautet also entweder, Sie können sofort vom ersten Tag an mit dem Namen beginnen . Angenommen, Benutzer haben ein Punktdatum. Jetzt hier, sende die Daten. Sie möchten dies in Form einer Karte aktualisieren. Schlüsselwert, das ist der Name. Ich möchte, dass es zu Elon Musk wechselt. Und als Nächstes musst du dieses Spiel schreiben, denn hier fügen wir die Bedingung hinzu, welche Daten aktualisiert werden sollen . Also sollte id gleich zehn sein. Also aktualisiere die Daten. Wessen Ausweis ist das? Seltsam? Sie haben eine andere Syntax. Um zu aktualisieren. Sie können jedes dieser beiden Benutzerupdates verwenden. Das ist also derselbe Name, aktualisiert auf Elan Musk. Aber statt Match werden wir Equal verwenden. Das war's. Und hier wird es wie ID sein, ruhiger als nicht in Form einer Karte. Denken Sie daran, dass dies ein Unterschied zwischen den beiden Syntax ist. Also, was auch immer Sie möchten, verwenden Sie dieses D, weil Sie später verwirrt sein könnten , wenn Sie irgendeinen Anwendungscode sehen und denken werden, okay, wir haben nur dieses Schlüsselwort gelernt, wie das verwendet wird. Das ist der Grund. Implementieren Sie das jetzt einfach in unserer App. Hier. Als Erstes sollten Sie eine Supervisor-Client-Funktion einrichten. In der Zukunft funktioniert das nicht. Es gibt nichts zurück. Die Datensynchronisierung. Hier schreibe ich, ob Title-Controller-Punkttext gleich Null ist, dann, wenn er nicht gleich Null ist, dann führe nur diesen gesetzten Zustand aus. Ist Laden gleich wahr. Fangen. Darin trocknen Sie einfach sofort. Es ist wahrscheinlich nicht aus List. Nicht aktualisieren. Der Wert ist del update the title value. Löschen Sie den Controller-Punkttext und passen Sie ihn an. Was wir zusammenbringen müssen. Ausweis. Id ist eine starre Punkt-ID wie diese. Und wenn es fertig ist, einfach Navigator, nicht Pop. Wir machen einfach nichts draus. Da wir Streams verwenden, wird es auf jeden Fall in Echtzeit aktualisiert. Hier. Wenn etwas nicht stimmt, ist a gleich falsch. Und Gerüstbote aus Kontexten, Punkten, Snackbar anzeigen, wird schreiben, dass etwas schief gelaufen ist. Und wir werden prüfen, ob das der Header ist. Ok, speichere es. Und ich werde auch die Entsorgungsfunktion verwenden. Sie verfügen über Kontrollpunkte. Es ist eine gute Praxis , dass Soja oder weniger für dieses Dummy-Projekt nicht erforderlich ist. Aber wir möchten immer das Beste tun. In diesem Update weisen Sie nun einfach vor Ort die einfach vor Ort die Engine zu, also diese, und speichern Sie sie. Lassen Sie uns die Anwendung testen. Wenn ich zum dritten gehe , ist das Master Flatter. Und sie sammeln Flattern und das und klicken auf Update. Siehst du, nichts ist passiert. Mal sehen, ob es einen Fehler gibt. Die Glühbirne ist Dot Todos Dot Update. Ich denke, es hätte aktualisiert werden sollen. frühen Titel-Controller-Punktdecks von Eid stimmen überein. Sehen wir uns unsere Daten an. Okay. Wir haben Master Florida und Dart hier. Aber warum wurde es nicht in Echtzeit aktualisiert? Wenn ich es aktualisiere, ist es da, aber es sollte nicht der Fall sein. Aktualisierungsfunktion funktioniert. Lass es uns noch einmal versuchen. Aktualisiere. Sag okay, jetzt funktioniert es. Ich bin nicht aus Versehen auf eine ganz kleine Panne gekommen, habe die Master-Flirtprogrammierung modifiziert und aktualisiert. Es funktioniert einwandfrei. Wir haben auch die Update-Funktion verstanden. Jetzt müssen Sie nur noch lernen, wie Sie Daten aus Superbus löschen. Superbus stellt uns auch den verstorbenen meinen dritten zur Verfügung. Es ist sehr einfach wie die Aktualisierungsmethode und sollte mit Filtern kombiniert werden. Und wir können entweder Match oder Equal verwenden. Ich meine also, wir nehmen an, wir haben diese verzögerte Funktionalität. Die Syntax ist einfach. Super Möglichkeiten von Benutzern, die nicht verzögert werden. Und dann stellen Sie sicher, dass Sie dieses oder ein gleichwertiges Spiel haben. Ich habe zwar dieses Match hier, die ID ist gleich zehn, so. Lassen Sie uns eine Löschfunktion implementieren. Ich werde das einfach kopieren, aktualisieren und einfügen. Ich werde löschen schreiben. Ich benötige diese If-Aussage nicht. Geben wir an, dass das Laden wahr sein sollte. Hier. Warte, sollte nicht sein. Löschen. Es ist ein Weight Superbus von Todos Dot Delayed. Und direkt haben wir diese Match-ID. Und das werden wir haben, danach werden wir platzen. Oder wenn Sie einen Pilzfehler haben, zeigen sie ihn vielleicht in der Snackbar und weisen ihn einfach über die Schaltfläche mit der erhöhten Taste zu. Tägliche Daten wie diese, dann platzieren und speichern. Lassen Sie uns das auch testen. Ich werde den ersten entfernen, Mastermind-Stack. Es wird jetzt entfernt. Wenn wir zu unseren Datenbankdaten gehen, um Daten zu finden, wenn ich sie aktualisiere, werden es drei sein. Wir haben also erfolgreich verstanden, wie Daten erstellt, gelesen, aktualisiert und gelöscht werden. Ich hoffe, du hattest bis jetzt Spaß beim Lernen. Im nächsten Video werden wir etwas Neues lernen. Sie leihen eine Übung aus. 17. Ermöglichen von Sicherheit auf Row Level: Hi, Willkommen zurück. Heute lernen wir ein neues Konzept kennen , nämlich eine Sicherheit auf Zeilenebene, auch bekannt als RLS. Rls ist eine Sicherheitsfunktion , mit der wir den Zugriff auf Zeilen in einer Datenbanktabelle anhand der Identität oder Rolle eines Benutzers steuern Zeilen in einer Datenbanktabelle können. In Superbus können wir RLS verwenden, um einzuschränken, welche Datenzeilen ein Benutzer sehen kann, basierend auf vordefinierten Regeln geändert werden . Bisher hatte jeder mit dem öffentlichen API-Schlüssel Zugriff auf unsere Datenbank. Denken Sie auch daran, dass das Standardverhalten nach der Aktivierung der bidirektionalen RLS-Tabelle darin besteht, dass beim Abendessen jeder Zugriff verweigert ob der Benutzer authentifiziert ist oder nicht. Bis wir unsere Richtlinien erwähnt haben. Jede Richtlinie wird an eine Tabelle angehängt und ihre Richtlinie wird ausgeführt. Jedes Mal, wenn auf eine Tabelle zugegriffen wird, können Sie sich diese einfach so vorstellen als würden Sie jeder Abfrage eine Where-Klausel hinzufügen. Die Tabelle kann unterschiedliche IRLS-Richtlinien haben. Vielleicht möchten Sie, dass ein Tisch produziert wird , ein anderer vielleicht nicht. Es liegt also an Ihnen, welcher Tabelle Sie Zugriff gewähren möchten. Das reicht also für die Curie. Lass es uns aktivieren. Gehen Sie zum Superbus-Dashboard, gehen Sie zu unserer Cation. Dann können Sie hier die Richtlinien einsehen. Dann wird hier erwähnt, dass RLS deaktiviert ist. Also klicken Sie einfach auf Enable RLS. Oh, okay. Wenn wir jetzt unsere App neu starten, werden wir feststellen, dass keine Daten angezeigt werden. Mal sehen, keine Daten verfügbar. Wir müssen Richtlinien schreiben. Und Richtlinien ermöglichen es uns im Grunde, festzulegen , wer Zugriff auf welche Daten hat und welche Aktionen mit den Daten ausgeführt werden können. Wir müssen Richtlinien für alle Rohöloperationen schreiben. Das heißt erstellen, lesen, aktualisieren, löschen. Und es ist sehr einfach. Klicken Sie in dieser To-dos-Tabelle auf Neue Richtlinie. Danach erhalten Sie zwei Optionen. Wir werden vorerst die Option „ Schnell loslegen“ wählen. Für eine erweiterte Option können Sie sie sich später ebenfalls ansehen. Einfach hier klicken. Dann. Es gibt uns für die Politik. Aber zunächst möchte ich Ihnen sagen, welche Richtlinien ich für diese Anwendung haben möchte. Das heißt, für unsere Todos-App. Außerdem sollten Benutzer nur auf seine eigenen Daten zugreifen oder diese lesen. Das bedeutet, dass die Benutzer-ID-Spalte in der Superbase der Idee der Person entsprechen sollte , die die Anfrage sendet. Das ist das Erste. Zweitens sollten alle Benutzer Lage sein, Daten zu erstellen, wenn sie authentifiziert sind. Also wenn, wenn es ums Einfügen, Einfügen geht , ist jeder erlaubt. Gerade an diesem Tag müssen sie authentifiziert werden. Und jetzt zum Aktualisieren oder Löschen sollten Benutzer in der Lage sein, seine eigenen Daten auf Lead zu aktualisieren oder zu löschen , also einfach so. Lesen Sie die Richtlinie. Die Spalte mit der Benutzer-ID sollte der Idee der Person entsprechen , die die Anfrage sendet. Das war's. Nun nochmal zurück zu dieser Vorlage. Es gibt uns vier Möglichkeiten. Zuerst ist und es wird Lesezugriff für alle, dann aktivieren Sie den Insert-Zugriff für authentifizierte Benutzer auf. Die heutigen Versionen ermöglichen Benutzern einen Bit-Zugriff auf der Grundlage ihrer E-Mail und ihrer 40er Jahre. Und er hat den Löschzugriff für Benutzer auf der Grundlage ihrer Benutzer-ID zusammengefasst. Wir werden dies verwenden, das heißt, der Zugriff basiert auf dem Benutzer. Ich habe diese Vorlage erstellt Wir werden sie verwenden und ändern, um sie der Einfachheit halber Verwenden Sie einfach diese Vorlage. Jetzt. Es fragt uns nach Dingen. Der erste ist der Name der Richtlinie. Ich schreibe einfach Enable, Lesezugriff für Benutzer anhand der Benutzer-ID. Dann. Zulässiger Betrieb, ich wähle diesen aus. Und denken Sie daran, wenn Sie zwei Dinge können, aber Sie können nicht. Das ist hier, nur einer nach dem anderen. Dann wächst das Ziel, belassen Sie es einfach auf der Standardeinstellung auf all, da der Benutzer offensichtlich authentifiziert werden muss. Jetzt mit Expression. Jeder sollte, wir sollten eine Punkt-ID , die der Benutzer-ID entspricht, okay? Diese Benutzer-ID ist also der Spaltenname, und die R-Punkt-ID bedeutet die Person, die die Anfrage sendet. Wenn ich nun versuche, auf Speichern zu klicken, wird eine Adder-Funktion angezeigt, die nicht erstellt werden kann. Eine seltsame ID existiert nicht. So sollte es nicht sein. Und es gab auch noch einen anderen Fehler. Aber warte, ich mache es wieder. Sehen Sie hier, ob das Gleiche gilt , wenn ich schreibe, Lesezugriff. Und wenn ich das nur ausgewählt hätte. Wenn ich nun schreibe, überprüfe, Safe-Policy und sehe nun nach, dass der Operator nicht existiert. Sie, UUIDs, gehen zu Tech, da wir die Benutzer-ID erwähnt haben, dieser Wert als Text in Supervision ist. Denken Sie daran, dass sein Wert Text ist. Sie können also entweder den Spaltentyp zwei Ganzzahlen ändern oder diese Änderung vornehmen, oder diese Änderung um sicherzustellen, dass sie so funktioniert. Wenn ich jetzt auf Richtlinie überprüfen und speichern klicke , wurde die Richtlinie erfolgreich gespeichert. Aktivieren Sie also den Lesezugriff für Benutzer anhand der Benutzer-ID. Mal sehen, ob unsere App funktioniert oder nicht. Jetzt können wir auf unsere eigenen Daten zugreifen. haben wir erfolgreich gemacht. Sie neigen dazu, die Zugriffsrichtlinien für unsere Datenbanktabelle zu lesen. Im nächsten Video schreiben wir einfach die Richtlinie zum Einfügen, Aktualisieren und Löschen. Und Q. 18. CRUD Richtlinien schreiben: Hallo. Jetzt müssen wir diese Richtlinie für das Einfügen erwähnen. Und dafür werden wir wieder auf Neue Richtlinie klicken. Dann legen Sie schnell los. Und hier wählen wir die Vorlage Dann fügen wir den Zugriff für authentifizierte Benutzer ein, um nur diese Tabelle zu verwenden. Hier. Wir müssen nichts weiter tun. Klicken Sie dann auf Richtlinie überprüfen und speichern. Das heißt, wir haben gelesen, wir haben eingefügt. Jetzt oder aktualisieren. Wir werden den Zugriff wieder auf der Grundlage der Benutzer-ID verwenden, also dieser Vorlage und des Datums für Benutzer. Und hier klicke ich auf Update. Es gibt uns ein anderes Feld, das ist, das dasselbe sein wird. Und wieder, wie gesagt, da es sich um eine Zeichenfolge handelt, muss ich sie in eine UUID konvertieren und sie kopieren und hier einfügen. Das war's. Es bedeutet einfach jedes Update der Benutzer auf der Grundlage ihrer Benutzer-ID. Überprüfung, sichere Richtlinie. Okay. Nun zur letzten, erkundigen Sie sich nach einer neuen Richtlinie, wöchentlich oder verzögert. Jetzt ist es so, als würde man den Zugriff für Benutzer anhand ihrer ID aktivieren. Verwenden Sie diese Vorlage. Alles ist okay. Einfach dieser. Denken Sie daran, diese UUID müssen Sie nicht schreiben, wenn Sie die Spalte, also die Zeilennamen oder die Spalte, als Ganzzahl und nicht als Zeichenfolge in der Datenbank erwähnt haben Zeilennamen oder die Spalte . Das war's. Verzögert K. Klicken Sie auf Überprüfen und Sicherheitsrichtlinie. Wir haben also alle Richtlinien, wenn Chen, oder? Jetzt funktioniert unsere App einwandfrei. Sicherheit auf Zeilenebene ist eine sehr grundlegende Sache, aber sehr, sehr wichtig. Ich hoffe, Sie haben verstanden, dass, wenn wir eine reale Anwendung entwickeln, dies alle Funktionen sind, alles, was notwendig ist. Sicherheit ist das, was wir in unserer Anwendung benötigen. Das ist es also. Für dieses Konzept. Im nächsten Video werden wir anfangen, daran zu arbeiten. Also strombasierter Speicher, Enqueue. 19. Speicherkonfiguration: Hallo, willkommen zurück. Wir haben also etwas über Authentifizierungsdatenbanken und Sicherheit auf Zeilenebene gelernt . Jetzt ist es endlich an der Zeit, dass wir verstehen, wie Speicher in Supervision eingesetzt wird. In der heutigen Welt steht Content an erster Stelle. Dann schauen Sie sich Social-Media-Apps oder E-Commerce an, überall finden Sie diese Bilder und Videos. Es ist also Zeit. Wir lernen auch, wie man Dateien in unseren Speicher hochlädt. Als erstes müssen wir einen neuen Bucket erstellen. Hier können Sie sehen, dass Bucket ein Container ist , in dem Dateien gespeichert werden. Jeder Bucket ist mit einer eindeutigen URL verknüpft, die auf die darin enthaltenen Dateien zugegriffen werden kann. Jeder Bucket kann über eigene Berechtigungen verfügen, sodass Sie steuern können, wer in ihn lesen und schreiben kann. Genau wie RLS. Wenn Sie eine Datei in einen Bucket hochladen, erhält sie automatisch eine eindeutige URL, über die Sie jederzeit auf die Datei zugreifen können. Klicken Sie also einfach auf Bucket-Namen erstellen. Ich werde einfach Benutzerbilder schreiben. Machen Sie es öffentlich , damit wir später darauf zugreifen können. Und wir werden auch Wertpapiere erwähnen, sodass es nicht so viele Probleme geben wird. Jetzt haben wir also diese Benutzerbilder. Was wir auch brauchen, um Richtlinien zu schreiben, genau wie wir es bei Database Sex und über Richtlinien oder Buckets gelernt haben, können wir Berechtigungen einrichten , die steuern, wer sie lesen und schreiben darf. Sie erhalten zum Beispiel, Sie könnten einen Bucket einrichten, auf den nur authentifizierte Benutzer zugreifen können oder der öffentlich zugänglich ist. Darüber hinaus können Sie Richtlinien für Verstöße einrichten , die Dateien nach einem bestimmten Zeitraum automatisch löschen. Klicken Sie nun auf Neue Richtlinie. Dazu klicken Sie einfach auf Neue Richtlinie. Dann werden wir den Schnellstart nutzen. Und es gibt uns fünf Optionen. Erlauben Sie den Zugriff auf JPEG-Bilder in einem öffentlichen Ordner. Erlaubt Ihnen nur den Zugriff auf ihren eigenen Ordnernamen auf oberster Ebene. Als UID. Geben Sie Benutzern Zugriff auf einen Ordner, indem Sie authentifizierten Benutzern Zugriff gewähren. Gewähren Sie nur einem bestimmten Benutzer Zugriff auf einen verschachtelten Ordner namens admin. Geben Sie einem Benutzer Zugriff auf f phi. Wir geben den Benutzern nur Zugriff auf ihren eigenen Zugriff. Das ist der Ordnername der obersten Ebene, diese UUID, es ist UID. Verwenden Sie diese Vorlage hier. Wählen Sie zunächst alles aus. Hier. Es tut mir leid. Ich mache immer wieder einen wirklich dummen Fehler. Aber die nächste Sache, die Verwendung von Löhnen und Steuern, hat sie in einer wirklich sicheren Politik gemacht. Das bedeutet also, dass in diesem Bucket ein Ordner erstellt wird. Das heißt, jeder Benutzer hat seinen eigenen Ordner. Sie werden es verstehen, wenn wir anfangen, Bilder hochzuladen. Jetzt müssen wir auch ein Paket installieren. Gehe zu pub.gov und schreibe den File Picker. Ich wähle diesen aus. Gehen Sie einfach und kopieren Sie eine Abhängigkeit. Gehen Sie in die Pub-Spezifikations-Punkt-YAML-Datei. Unterhalb des Flüssigkeitspunkts ENV. Einfach einfügen und speichern. Es dauert ein bisschen. Wir werden aber weitermachen. Es ist erledigt. Bei Bedarf können Sie unseren Stopp und Ihre Anwendung neu starten, aber ich denke nicht, dass dies erforderlich ist. Und auch für Android gibt es keine Konfiguration. Wenn Sie jedoch ein iOS-Gerät verwenden, können Sie hier in der Dokumentation nachlesen , wie Sie es konfigurieren. Aber für unser Gerät ist das Ding erworben. Das ist es also. Im nächsten Video werden wir mit der Arbeit an der Upload-Funktion beginnen. 20. Implementierung von Upload: Hallo, lass uns auf dem Upload-Bildschirm beginnen. Erstellen Sie eine neue Datei innerhalb von Seiten und geben Sie ihr einen Namen. Upload. Seite Punkt, Punkt. Fangen Sie an, an der UA zu arbeiten. Importiere Materialeingänge, Autobahnen, Florida. An Bord. Erstelle diesen Staat inzwischen mit voller Vision. Wir könnten es einfach Upload nennen, Alter. Und jetzt Kalb als Waffen, Superbus, Lager. Dann Körper. Lassen Sie es vorerst einfach beim Behälter. Dann schwebende Aktionstaste. Schwebende Aktionstaste. Diese Schaltfläche wird verwendet, um ein Fotosymbol hinzuzufügen. Ich kann anfangen und die Presse drücken, lass es einfach vorerst. Und dann erzeugt ganz oben einen Zustand zum Laden. Entladen ist gleich falsch. Gehen Sie jetzt zur Homepage dot.in der AB-Leiste. Erstellen Sie eine neue Schaltfläche , um Bilder hochzuladen. Hier. Ich werde einen neuen Knopf haben, da ich an Ort und Stelle zuknöpfen kann. Und ich kann sein, ich kann eine Datei hochladen. Und es sollte wie immer weg sein. Und in On-Premise navigieren Sie einfach, navigieren Sie in ihrem Busch. Materialisiere es aus. Und laden Sie die Seite hoch. Das war's. Speichern wir es. Und sieh dir unsere App an. Es spart immer noch. Okay, wir haben dieses Symbol. Wenn ich darauf klicke, siehst du, das ist die Speicherseite. Jetzt ist es an der Zeit, an der Funktion zum Hochladen von Bildern zu arbeiten. Supervise gibt uns eine Upload-Funktion, die zwei Argumente akzeptiert, war dieser Dateiname. Und wir können in diesem Argument auch die gefaltete Struktur, in der wir sie speichern wollen, in Superbus verschachteln und erwähnen die gefaltete Struktur, in der wir sie speichern wollen . Das zweite Argument ist die Datei , die wir hochladen möchten. Lass uns gehen, lass uns zur Upload-Seite gehen. Ja, als Erstes an Bord, nicht IO. Erstellen Sie dann eine Superbus-Instanz, Client-Instanz, wie folgt. Erstellen Sie dann eine Funktion. Zukunft. Dateisynchronisierung hochladen. Jetzt posten wir, indem wir die Dateiauswahlbibliothek verwenden. File ist unglaublich ähnlich zu await. Von einer großen Plattform. Nicht auswählbare Dateien lassen mehrere, mehrere Stürze zu und sie werden als Punktbild angezeigt. Wir werden vorerst den Tab Datei unter Bild verwenden, natürlich genauso, wie Sie jede Datei hochladen können. Jetzt schreiben wir eine if-Anweisung, um zu überprüfen, ob der Benutzer eine Datei ausgewählt hat oder nicht. Wenn die Datei nicht Null ist, dann ist nur der Status des Uploads auf true gesetzt. Dann versuchen wir es mit dem Catch-Block. In diesem Fahrbus. Es ist schwerer. Dateidatei ist gleich, wir müssen sie in ein Dateiobjekt umwandeln, Datei-Punktdateien erster Punktpfad. Und es wäre nicht Null, da wir den If-Check haben. Dann fragst du vielleicht zuerst weiß weil es uns die Liste der Dateien gibt und wir wissen, dass wir nicht mehrere erlaubt haben, also wähle einfach die erste Datei aus, das war's. Dann entspricht der Zeichenkettenname großen Datei- und Punktdateien. Vorname mit Punkt. Dann String-Upload. Uploaded URN entspricht await. Nun, das ist die Syntax Superways Storage. Nicht aus unserem Bucket-Namen stammen Benutzerbilder. Dann hier, wer ist die Upload-Funktion? Und es fragt nach Depth Bat. Denken Sie also daran, dass wir einen Ordner mit dem Namen dieser Benutzer-ID erstellen müssen . Ich hoffe, Sie erinnern sich einfach daran , dass wir uns an die Richtlinien halten, die wir so geschrieben haben. Der Supervisor ist keine Kunst, keine aktuelle Benutzer-ID. Dann habe ich einen Schrägstrich und dann den Dateinamen. So wie das. Und das ist eine Datei, die bereits aufgenommen wurde. Wenn Sie möchten, können Sie jetzt einfach die hochgeladene URL ausdrucken. Und dann mache ich einfach set state is loading ist gleich false, wird nicht geladen, es wird hochgeladen. Isabelle wird auf false hochgeladen. Und Gerüst den Messenger of Contexts Snackbar, dass ich Datei erfolgreich hochgeladen Datei hochgeladen habe. Vollständig geschlechtlich. Hintergrundfarbe, Farbe ist dunkelgrün. Und mach es einfach zur Konstante. Und in diesem Fang sag einfach drucken. Im Moment ist es Debugging. Und wir werden Werbung drucken. Der Status festlegen ist das Hochladen von Dateien. Er lädt Musical auf false hoch. Und ähnlich ist bei Scaffold etwas schief gelaufen. Das war's. Nun, K Ja. Das ist auch eine Desktop-Anwendung. Okay. Ich habe es nicht zugewiesen. Lass uns zum Upload gehen. Unser Funktionsname ist Upload-Datei. Scannen Sie es hier. Wenn ich jetzt auf den Button klicke, denke ich nur, was wird hier hinzugefügt? Jetzt sind meine Daten da, aber auch im Floating Button. F zu tun, wenn das Hochladen wahr ist. Und gegen dieses Ziel. Fortschrittsindikator. Speichern Sie alles, versuchen Sie erneut, um zu sehen, was die zusätzliche Ausnahme durch fehlendes Plug-In-Hockey ist die zusätzliche Ausnahme durch fehlendes Plug-In-Hockey Lassen Sie uns unsere Anwendung beenden und neu starten. Also habe ich bereits mit meiner Bewerbung begonnen. Lass es uns noch einmal testen. Klicken Sie auf die Schaltfläche. Jetzt fragt seine Lieferantenbasis, wir können es nur einmal zulassen. Verwenden Sie dann dieses Bild und speichern Sie die erfolgreich hochgeladene Datei. Gehen wir nun zu unserem Supervisor-Dashboard. Hier. Wenn ich es einfach neu lade, werden Sie sehen, dass wir dieses Benutzerbild haben. Und wir haben dieses Bild hier. Und das ist der Name der Benutzer-ID. Das heißt, dies ist ein Ordner mit der Benutzer-ID. Ich hoffe, Sie haben verstanden, wie wir Bilder hochladen können. Pausiere einfach das Video und verstehe unseren Versuch, den Code zu verstehen. Das ist einfach eine grundlegende Sache. Das erste, seit diesem Upload der EXE-Datei, Datentyp Schuld, warum wir es in eine Datei konvertiert haben. Dann haben wir den Dateinamen und das war's. Im nächsten Video werden wir die hochgeladenen Bilder und Q patchen. 21. Fetch hochgeladene Bilder: Hallo. Jetzt ist es an der Zeit, dass wir die hochgeladenen Bilder in Firebase abrufen. Wir können die Listenmethode der Storage-Dot-Bucket-Funktion verwenden , um alle Dateien in diesem Ordner von ihm auszuwählen . Die Bucket-List-Methode gibt eine Liste der Dateien im Bucket zurück, die Sie dann wiederholen können , um auf die einzelnen Dateien zuzugreifen. Also nur um die Syntax zu emulieren, die Syntax zum Abrufen von Bildern. Es ist einfach so. Endgültige Liste Dateiobjekt. Ergebnisse. Nehmen wir hier ein Gewicht an. Also Bobbys Aufbewahrung für Punkte. Von da an, aus Bildern, das ist der Bucket-Name, Punktliste. Okay? Sie können hier einfach den Bucket-Namen einfügen. Name des Buckets. Denken Sie also daran, dass wir den Ordnernamen in dieser Liste erwähnen können den Ordnernamen in , indem wir ein Argument namens Math übergeben. Wie in unserem Beispiel erstellen wir Ordner nach Benutzer-ID. Also werden wir das nutzen. Lassen Sie uns die Funktion dunkel und schreiben Sie die Funktion def. Erstellen Sie eine neue Funktion. Mein Name, holen Sie sich meine Ergebnisse. Endgültige Liste. Dateiobjekt. Das Ergebnis entspricht Await Superbus. Superbus nichts. Naught H. Nichts vom Benutzerbild ist eine dunkle Liste. Okay? Das ist also die Luft, aber natürlich müssen Sie diesen Ordnernamen erwähnen. Es wird die aktuelle Benutzer-ID mit einem superklaren Punkt sein. Dieser Ordnername. Höhle. jetzt auch daran, Denken Sie jetzt auch daran, dass dieses Ergebnis nicht die Bild-URL zurückgibt. Also hier, was ich damit meine ist warten. Liste, obwohl ich nur ein Balkenelement in das Ergebnis schreiben werde , das Element drucken. Okay, lass es uns versuchen. Mal sehen, alles von der Konsole verschieben. Wenn ich klicke, habe ich die Funktion offensichtlich nicht aufgerufen . Das glaube ich nicht. Wir haben hier einen Init-Staat. Okay, lass uns ein dummes Ziel angeben. Lass uns den Init-Status machen. Hol meine Akten. Wenn ich nun auf die Seite gehe, haben wir eine Instanz des Dateiobjekt-Elements C. Das ist es, was es uns gibt. Bucket-ID, kuratierte Buckets, Metadaten, Name wie dieser. Aber es gibt uns nicht die Bild-URL, also erhalten Sie den Namen, Sie können den Namen, Entschuldigung, ID und Namen sowie Metadaten abrufen . Also wenn ich neu gestartet habe. Dann sehen Sie die ETag-Größe und die Cache-Kontrolle. Alles ist die Anzeige und nicht die Bild-URL. Dafür bietet uns Supervise eine weitere Funktion, nämlich das Abrufen der öffentlichen URL. Ich werde dir zeigen wie. Zuerst erstelle ich eine leere Variable, die eine Liste von Zeichenketten sein wird. Meine Bilder sind wie diese. Dann kann es sich ändern. Im Ergebnis. Wir haben inzwischen, Sie erhalten eine URL, die gleich ist. Jetzt hier. Von hier aus ist unser Supervisor nicht von, nicht vom Benutzer. Bilder. Nicht bekommen. Lass uns sehen, was los ist. Okay, ich habe den Speicher vergessen. Was für ein dummer Fehler. Dot-Benutzerbilder erhalten eine öffentliche URL. Siehst du. Jetzt werden wir nach dem Teil der Bildleiste gefragt , den wir benötigen. Erstens der Ordner , der so allgegenwärtig ist, Punkt, Punkt, aktuelle Benutzer-ID. Und wenn Sie möchten, können Sie auch einen Anbieter wie das State Management verwenden und diese Idee und alles dort speichern. Im Moment mache ich es nur auf eine sehr einfache Weise. Und denken Sie daran, dass wir den Bildnamen bekommen. Es ist also wie ein Bildpunktname, so. Daraus erhalten wir die URL, die verwendet werden kann , um Innovationen zu zeigen. Okay? Und mal sehen, ob es die Zukunft ist oder nicht. Nein, das ist nicht die Zukunft. Also kann ich das Gewicht einfach abnehmen. Und hier werde ich diese Informationen zu den obigen Informationen bei EMTALA hinzufügen . Als Erstes werde ich auch den Namen speichern, damit er später zum Löschen verwendet werden kann, Zweck löschen. Und URL wird reichen und die URL wie folgt abrufen. Und zum Schluss werde ich meine Bilder zurückgeben. Und wenn Sie möchten, lassen Sie uns zuerst drucken, ob es funktioniert oder nicht. Meine Bilder sind variabel. Und mal sehen, ich gehe einfach nochmal auf diese Seite. Und siehe Bildname ist das, URL ist das. Das heißt, wir erhalten die Informationen. Das ist die öffentliche URL. Jetzt ist es an der Zeit, dass wir zeigen, dass die Bilder in der Benutzeroberfläche, die sich hier im Hauptteil befindet , nur ein Container waren. Das wird sich ändern. Jetzt schreiben wir Future Builder. Dein Stuhl. Wir haben diese Zukunft und bekommen meine Akten. Kontext, ein Senk-Snapshot. Momentaufnahme. Wenn Snapshot Dot nun Daten hat, dann mach etwas anderes. Rendite ist ein zirkulärer Fortschrittsindikator. Indikator. Wenn der Snapshot Daten enthält , überprüfen wir zunächst, ob. Momentaufnahme. Daten. Punktlänge ist, wenn sie gleich Null ist, das heißt, es wird kein Bild hochgeladen. Dann Anleihen zurückgeben, Text in der Mitte, keine Bildbeschriftung. Und wenn das nicht der Fall ist, dann kehre zurück. Lass uns das machen. Widget. Und denken Sie daran, Sie können auch den Builder verwenden, aber ich verwende ein anderes Widget, das als Separated bekannt ist, sodass ich zwischen allen Elementen eine Trennung von habe, das heißt, ich habe sie als Trennzeichen unterteilt. Dies ist eines der Widgets in Clutter. Ich rechne, dass das da ist, aber ich werde zuerst schreiben. Separator wird lernen. Es hat auch Texte und einen Index. Wir geben einfach einen Konstantenteiler wie diesen zurück. Von der Dicke zur Farbe. Die Farbe ist dunkelschwarz. So wie das hier. Dann lernen wir es. Wiederum dasselbe beim nächsten Index. N. Ich werde den Data Map Image Data Snapshot-Datenindex abrufen. Ich speichere hier nur den Kartenwert aus dieser Liste nacheinander. Und gib eine Zeile zurück, was bedeutet, dass überschüssige Elemente zugänglich bleiben. Und das Mendota Center und die Kinder werden Pudding essen. Die erste ist die Größe der Box. Hier. Es wird üblich sein. Die Box, das ist, das wird das Bild sein. Ich gebe ihm nur die Höhe. Es dehnt sich nicht auf alle oder weniger Stöcke aus und hat später keine Probleme. Bildpunktnetzwerk. Jetzt hier, Hauptbilddaten, URL, Feld, Punktcover. Und nach diesem großen Feld in dieser Zeile werde ich eine Symbolschaltfläche haben. Ich kann sein, ich kann bequem Farben löschen, Rot, 0, Schlüssel. Und ich werde diesen Init-Status vorerst entfernen. Ich hoffe alles Wir werden funktionieren. Jed ist, schauen wir uns unsere Bewerbung an. Ich klicke auf diese Schaltfläche und sehe, dass das Bild in unserer App angezeigt wird. Ich werde diese Listenansicht nur erweitern . Das war's. Beim Hinzufügen wird eine konstante Kante punktsymmetrisch eingefügt. Was sie können. Dann so. Siehst du, das ist unser Bild. Ich hoffe alles ist okay. Lass uns ein weiteres Bild hochladen. Lass uns sehen. Ich werde diesen Virus benutzen. Siehst du, wir haben auch diesen Teiler und wir haben hier zwei Bilder, die großartig aussehen. Wir haben auch den Teil des Abrufs von Bildern erledigt. Im nächsten Video werden wir an dieser Schaltfläche zum Löschen arbeiten. Und dann haben wir alles getan , um in Superbus zu lernen. Ich danke dir. 22. Bildfunktion löschen: Hallo, willkommen zurück. Lassen Sie uns nun an der Löschfunktion des Speichers arbeiten . Auf Autobahnen. Wir haben DUS, entferne meine Technologie, um eine Datei aus dem Bucket zu löschen. Schreiben Sie also einfach eine Syntax , um sich an ihrem sehr einfachen Slipfinal-Listenobjekt zu orientieren. Also gibt es uns auch diese gelöschte Datei zurück. Superways, dots, storage, bucket, name, dot remove this, remove x und füge einen Parameter mit den Dateinamen in diesem Bild hinzu, ein Punkt-PNG, wie dieses. Und wenn wir wollen, können wir auch erwähnen, dass der Ordnername hier ein Haar ist. In unserem Fall wird es erledigt und die Benutzer-ID. Lass es uns erstellen. Hier. Ich werde den Druck entfernen, wird in Zukunft nichtig sein. Ich möchte nichts zurückgeben, was breit ist, lösche das Bild. Und es wird einen Zeichenkettennamen annehmen, das ist der Bildname. Geben wir den Try Catch ein. Der Fangblock. Ja, das stimmt. Super Möglichkeiten. Punkte, Speicherpunkt aus Benutzerbildern. entfernen. Ja. Du musst einen Teil aufschreiben. Teil wird aus Super-As bestehen, die nicht die aktuelle Benutzer-ID plus und den Bildnamen enthalten. Sie können auch die Zeichenketteninterpolation verwenden. Aber jetzt schauen wir mal, ob es Arbeit ist oder nicht. Dann schicke ich einfach Daten, aktualisiere die Seite, damit unsere Zukunft stirbt. Zeigt uns die neuesten Bilder. Und wenn es einen Fehler gibt, dann ist Kontexte, Snackbar, einfach etwas schreiben, schief gelaufen. Das war's. Wir müssen diese Funktion verwenden, um sie hier in der Icon-Schaltfläche aufzurufen. Wie Knoblauch, Bildname, Bildname, und es wird der Name sein. Ja, wir haben ihm einen Namen gegeben. Lass es uns machen. Speichern wir es und holen wir unsere App heraus. Wir gehen da hin. Und wenn wir das unter Aufsicht gemacht haben, wenn ich darauf klicke, sehe ich, dass es jetzt auch aus dem Speicher gelöscht wird. Also, wenn ich es aktualisiere, mal sehen, ich denke, es wird der Film sein, ja, nur für ein Bild ist die Bearbeitung. Unsere Löschfunktion funktioniert ebenfalls einwandfrei. In einfachen Worten, wir haben diese vollständige Anwendung, sehen Sie, sie wurde gerade getestet. Schließlich, wenn ich das mache, dann werde ich einfach Projekte machen. Klicken wir nun auf Erstellen. Einfügen funktioniert. Dann haben wir die reale Welt. Und wenn ich es auf Schwarz ändere, ist es offensichtlich auch falsch, aber es funktioniert. Und dann geh und lösche es auch. Habe es gelöscht. Dies ist das Crud-Operations und Arena hat auch etwas über die Sicherheit auf Zeilenebene gelernt. Wir haben auch eine Authentifizierung durchgeführt. Und nochmal, wenn ich es hochlade. Wie Sie sehen können, der Upload auch einwandfrei. Und ich melde mich einfach ab. Also danke, dass du der Lee und ich hoffe, dich auch in meinen zukünftigen Kursen zu sehen. Also bis dahin, arbeite einfach weiter hart und übe weiter.