Supabase pour les développeurs de flutter - Authentification, base de données et stockage | Rahul Agarwal | Skillshare
Recherche

Vitesse de lecture


1.0x


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

Supabase pour les développeurs de flutter - Authentification, base de données et stockage

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      INTRODUCTION DU COURS

      1:09

    • 2.

      Pourquoi utiliser Supabase

      5:23

    • 3.

      Créez un nouveau projet

      13:55

    • 4.

      Configuration de l'écran d'Auth

      12:25

    • 5.

      Travailler sur l'interface utilisateur de démarrage

      16:46

    • 6.

      Mettre en place un inscription et un login

      10:25

    • 7.

      Fonctionnalité de déconnexion

      5:16

    • 8.

      Intégration de lien en profondeur

      5:15

    • 9.

      Configuration de Google Oauth

      7:09

    • 10.

      Implémenter Google Se connecter

      12:00

    • 11.

      Travailler sur l'interface utilisateur cruelle

      15:46

    • 12.

      Mettre en œuvre des fonctionnalités

      14:13

    • 13.

      Mettre en œuvre la fonctionnalité de lecture

      9:03

    • 14.

      Filtres et modifieurs

      14:25

    • 15.

      Mettre en place une base de données en temps réel

      7:12

    • 16.

      Mettre à jour et supprimer les fonctionnalités

      10:59

    • 17.

      Activer la sécurité des niveaux de rangée

      8:55

    • 18.

      Rédaction de politiques de CRUD

      3:26

    • 19.

      Configuration du stockage

      6:47

    • 20.

      Mettre en œuvre la fonctionnalité de téléchargement

      16:57

    • 21.

      Récupérer des images chargées

      17:17

    • 22.

      Supprimer la fonctionnalité d'image

      6:54

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

48

apprenants

1

projet

À propos de ce cours

« Supabase pour les développeurs de flutter » est le point de départ idéal pour les débutants qui veulent apprendre comment utiliser la plateforme Supabase dans leurs projets Flutter. Supabase est un backend open-source en temps réel qui vous permet d'ajouter facilement des fonctionnalités puissantes à votre application. Grâce à ce cours, vous apprendrez comment configurer un projet Supabase, authentifier les utilisateurs en utilisant des e-mail et un mot de passe, ainsi que Google Connexion, effectuer des opérations de CRUD sur la base de données, mettre en place une sécurité au niveau des lignes et télécharger des fichiers vers le stockage.

Le cours est conçu pour être facile à suivre, avec des explications claires et des exercices pratiques qui vous aideront à appliquer ce que vous avez appris. En partant des bases de la configuration de Supabase, vous apprendrez comment créer un nouveau projet, installer les paquets nécessaires et vous connecter à l'API Supabase. À partir de là, vous passerez à l'authentification des utilisateurs, où vous apprendrez comment créer un système de connexion de base pour votre application.

Une fois que vous aurez maîtrisé les bases, vous plongerez plus loin dans les fonctionnalités de Supabase's Vous apprendrez comment effectuer des opérations de CRD sur la base de données, notamment l'ajout, la mise à jour et la suppression de données. Vous apprendrez également comment mettre en place une sécurité de niveau de ligne, ce qui vous permettra de contrôler qui peut accéder et modifier des données spécifiques dans votre base de données.

En plus de cela, vous apprendrez également comment télécharger des fichiers dans le stockage, ce qui est une caractéristique essentielle pour de nombreuses applications. Vous apprendrez comment gérer les téléchargements de fichiers, les stocker dans le cloud, les récupérer et les supprimer plus tard.

À la fin de ce cours, vous aurez une bonne compréhension de la façon d'utiliser Supabase dans vos propres projets de démarrage ou de flutter. Inscrivez-vous dès maintenant et commencez à créer des applications puissantes avec Supabase et Flutter.

Rencontrez votre enseignant·e

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Enseignant·e

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.

Voir le profil complet

Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. INTRODUCTION DU COURS: Si nous devions devenir développeur de Flutter, vous connaissez peut-être Firebase. Firebase n'est pas la seule option sur le marché. Il existe un autre concurrent qui constitue une très bonne alternative, connu sous le nom de Superbus. Superbus gagne en popularité de jour en jour et il reçoit une bonne réponse de la part de la communauté. La meilleure caractéristique est sa nature open source et leur modèle de tarification. La base d'approvisionnement est gratuite et son plan de forfait payant est un forfait mensuel fixe pour utilisation illimitée, plutôt que de payer au fur et à mesure, ce qui peut s'avérer très coûteux à long terme. Ce cours est conçu pour les débutants. Nous allons commencer par mettre en place un nouveau projet de supervision. Ensuite, nous apprendrons comment autoriser son indication à l'aide d' un e-mail et d'un mot de passe et comment implémenter la connexion à Google. Ensuite, nous aborderons les opérations rudimentaires de la base de données. Nous écouterons également les modifications de la base de données en temps réel via des flux. Comprenez ensuite le concept de sécurité au niveau lignes et apprenez à rédiger des politiques pour sécuriser notre application. Et enfin, j'ai appris à télécharger et à supprimer des fichiers dans ce stockage. À la fin du cours, vous serez en mesure de créer start-up de vos rêves en utilisant tous ces concepts et qui sait, elle pourrait devenir la prochaine grande entreprise du secteur des technologies. Alors, sans gaspiller plus de diamant, allons-y. 2. Pourquoi utiliser Supabase: Bonjour, bienvenue dans la toute première vidéo du cours où nous allons apprendre à utiliser une base de données supervisée avec la technologie Clutter. Qu'est-ce que Superbus ? Superbus est une plateforme dorsale open source, en temps réel et puissante qui facilite la création et la mise à l'échelle d' applications Web et mobiles. To biowaste s'appuie sur la suite de Postgres, une puissante base de données SQL qui permet travailler facilement avec des structures et des relations de données complexes. Il dispose également d'un support intégré pour l'authentification, l'autorisation, la logique côté serveur et le stockage. Wildfire, qui existe depuis certain temps et possède un large éventail de fonctionnalités. Barbies est donc un acteur relativement nouveau sur le marché, mais il gagne rapidement en popularité auprès des développeurs en raison de sa nature open source. Il intègre de puissantes fonctionnalités et une grande flexibilité. Avec Superbus, vous avez contrôle total de vos données et infrastructure et vous pouvez personnaliser le service en fonction de vos besoins. Dans ce cours, nous nous concentrerons sur l'apprentissage de l'authentification, base de données, de la sécurité au niveau des lignes et stockage de manière simplifiée étape par étape. Mais avant de passer à autre chose, discutons de quelques points sur les raisons pour lesquelles nous devrions choisir Supervisor plutôt que Firebase. Le premier point concerne les bases de données SQL et NoSQL. données des suites de Postgres sont particulièrement puissantes lorsqu'il s'agit de requêtes, de jointures et de filtres complexes. Parce que les données sont organisées en tables, relations définies. Dans Supervise, vous pouvez utiliser la commande join pour combiner les données de plusieurs tables dans lesquelles vous souhaitez récupérer les données associées dans une seule requête. Vous pouvez également utiliser le filtrage et le tri des commentaires, comme dans le cas d'un OrderBy, pour récupérer des sous-ensembles de données spécifiques. En revanche, les bases de données NoSQL, telles que Fire Basis, portent des données, peuvent s'avérer plus difficiles et moins efficaces. modèle Firebase NoSQL ne dispose pas du même support intégré pour les requêtes, les jointures et le filtrage complexes. Vous devrez donc peut-être récupérer des données à partir de plusieurs documents , puis effectuer ces requêtes côté client. Une deuxième différence importante est le modèle de tarification. Les deux sont gratuits pour les débutants. C'est-à-dire que vous pouvez commencer gratuitement. Mais le modèle de tarification de Superbus est plus flexible et plus rentable que Firebase. Superviser. Les forfaits payants frais mensuels fixes pour un nombre illimité d'utilisateurs, tandis que Firebase facture en fonction des utilisateurs et propose des coûts plus élevés pour les utilisateurs plus élevés. À long terme, si votre application se développe, l'utilisation annuelle augmente. Le troisième point concerne l'importation de données préexistantes. Nous dirions omniprésente. Nous pouvons facilement importer un fichier CSV ou copier-coller une feuille de calcul pour démarrer le projet. C'est très bien si nous migrons des données d'une autre plateforme vers des superbugs. Firebase ne propose pas de services intégrés nous permettant de télécharger directement des données en masse. Vous avez peut-être des packages tiers, je ne sais pas, mais ils ne sont pas intégrés. Le point suivant est l'auto-hébergement. De nombreux développeurs souhaiteront peut-être créer une application auto-hébergée. Attendez pour des raisons de sécurité ou d'évolutivité. En matière d'auto-hébergement, Dan dit que c'est simple. Firebase ne nous autorise pas à vendre, a forcé notre application. Eh bien, les super affaires, nous hébergeons nous-mêmes, c'est important pour vous. Alors Superbus est la meilleure option. Alors. Le dernier point concerne l' absence de dépendance vis-à-vis du fournisseur. Lorsque vous utilisez un service basé sur le cloud, il est important de prendre en compte le risque de dépendance vis-à-vis d'un fournisseur. dépendance à un fournisseur se produit lorsque vous devenez dépendant d'un fournisseur particulier de Forest Service, ce qui rend difficile ou coûteux le passage à un autre fournisseur. Bobby's nous donne donc la liberté de changer de fournisseur à tout moment sans frais supplémentaires. Mais ce n'est pas le cas avec Firebase. Nous sommes coincés avec la plateforme Google pour toujours. Donc, soit nous sommes autorisés à nous héberger nous-mêmes dès le début, soit supposons que vous commenciez à utiliser Superbus, mais plus tard, j'ai voulu modifier la plate-forme qui est également autorisée dans Super Base. Pour ces raisons, je pense également que Superbus est plus convivial ou convient mieux aux personnes qui ne veulent pas prendre le risque de prendre le risque de prendre la base de données Firebase et se faire payer une facture énorme pour du code ou une erreur dans leur application. Parce qu'il n'y a pas de frais fixes dans Firebase, vos dépenses peuvent augmenter de façon exponentielle. Alors c'est tout. Sans perdre plus de temps sur la partie théorique. Mettons-nous les mains à la pâte et nous commencerons à travailler sur notre application Flutter dans la prochaine vidéo. Merci. 3. Créez un nouveau projet: Il est maintenant temps de commencer et de créer un nouveau projet Flutter. Et je suppose que vous avez déjà installé le SDK Flutter sur votre système. Accédez à votre dossier préféré et écrivez cette commande pour créer un nouveau projet. Créez Superbus. Je vais, je vais nommer le dossier ainsi. Tu peux le nommer comme tu veux. Entrons. Cela ne prendra que quelques secondes. D'accord ? Maintenant, notre projet est créé avec succès. Je vais simplement écrire, je vais d'abord aller chez Flutter. C'est plié comme ça. Ensuite, écrivez l'espace du code de commande pour ouvrir ce dossier dans notre éditeur de code VS. Vous pouvez voir ici que nous avons tous ces fichiers et dossiers. Maintenant c'est l'heure. Nous créons un nouveau compte Superbus , puis utilisons ces paramètres dans notre projet plus plat pour le connecter. Il vous suffit de vous rendre sur supervise.com comme ceci et de vous connecter avec votre compte. Je me suis déjà connecté. Alors maintenant, vous pouvez voir que je n'ai aucun projet. Nous devons donc d'abord créer un nouveau projet. Cela indiquera votre organisation. Ainsi, lorsque vous vous connectez, vous pouvez également créer une organisation. Je vais écrire le nom du projet sous la forme Flutter, super base. Utilisez n'importe quel mot de passe. Je vais juste écrire pour générer un mot de passe. C'est ça. Choisissez ensuite les études et celle qui est la plus proche de vous. Je vais juste choisir celui-ci. Et je vais commencer par le plan tarifaire qui est gratuit. OK, maintenant, créez un nouveau projet. Après avoir créé le projet, il faudra deux à trois secondes pour créer une base de données et nous obtiendrons les informations de notre API. Vous pouvez donc voir ici que j'ai également les clés d'API et l'URL. Et vous pouvez également obtenir les mêmes informations sur l'API dans cette section. C'est la page Paramètres plus tard si vous le souhaitez, et accédez à cette API dans la barre latérale. Celui-ci. Nous allons maintenant utiliser ces clés d'API dans l'application Flutter. Et pour cela, je vais utiliser une dépendance. Il suffit d'aller au pub Dev ici, tout d'abord, Superbus Flutter. C'est la dépendance que je vais utiliser pour me connecter à dw et la copier. Accédez à votre dossier, puis à Pub spec dot YAML. Et je vais le coller ici. Appuyez sur Entrée. Le prochain package que je veux s'appelle dot ENV. Ce package est utilisé pour que nos mots de passe soient sensibles. Les informations ne sont pas compromises car il n'est pas conseillé d'écrire directement dans l'interface utilisateur. Il suffit de le copier et de le coller. C'est ça. Ces deux packages sont maintenant installés. Pour utiliser ce package point ENV dans le dossier racine, nous devons créer un fichier portant uniquement l'extension point ENV. Prénom. Ici, nous écrirons nos informations d'identification. Je vais le nommer super base, l'URL est égale à. Et deuxièmement, de superbes moyens. K est égal à. Revenons à votre tableau de bord. Vous avez cette URL ici, copiez-la et collez-la dans l'URL. Encore une fois, allez voir ici que vous avez une clé publique et une clé. Il suffit de le copier et de le coller dans cette clé. C'est ça. Fermez simplement les points ENV où vous ne le souhaitez pas. Encore une fois. Pour s'assurer que notre application peut accéder à ce fichier ENV à points. Vous devez le mentionner dans les actifs. C'est-à-dire aller à Pub spec point YAML. Et ci-dessous, dans la ligne 65, vous pouvez voir qu'il est commenté. Tout d'abord, supprimez les articles non commentés. Ici. Encore une fois, peu commun le premier. Et le point droit ENV. Et souvenez-vous toujours que ce fichier YAML pub spec dot est très sensible. Si vous avez des erreurs de tabulation ou d'espace ici et là, cela générera une erreur. C'est donc également fait. Il est maintenant temps d'initialiser notre application. Passez donc à la branche et au point principal. Et nous devons initialiser le client Superbus dans notre fonction principale avec informations d'identification de l'API que vous avez copiées précédemment. C'est-à-dire que vous l'avez mentionné dans ce fichier point ENV. Tout d'abord, oui, importez le package super base ici. Et donc, importez le point e. Et nous l'avons fait, pas ENV, slash, point, point ENV, comme ceci. Dans la fonction principale. Assurez-vous d'en faire un évier. Ensuite, vous devez écrire ces commentaires de manière rigide. Reliure Florida. Assurez-vous de l'initialisation pour vous assurer que tout est initialisé. La première chose à faire est de charger ENV. Ils attendent le chargement de points ENV. Il s'agit de la commande fournie par ce package. Ensuite, nous devons toujours initialiser la soupe. Tout d'abord, je vais obtenir une URL super base, c' est-à-dire point ENV, puis ENV. Et ici, je vais ajouter cette clé qui est une URL de base. Et s'il est nul, utilisez simplement cette chaîne vide. Et l'URL est en majuscule. Ces choses créeront des erreurs. Ensuite, collez-le et j'ajouterai noms des variables ci-dessus, c'est la clé. Et ce sera essentiel. Après cela, attendez simplement la super base, ne l'initialisez pas sauf cURL. Nous l'avons. Et en cure de désintoxication clé aussi. Oh, d'accord. Nous avons ces choses. C'est l'heure. Nous structurons notre projet en dossiers. Au lieu de tout écrire dans ce fichier à points principal, allez simplement dans le laboratoire, créez un dossier et nommez-le pages. À l'intérieur, créez deux pages supplémentaires. Il s'agit de déplacer des fichiers point de page d'accueil point, point et page de démarrage point, point. Comme ça. Sur la page d'accueil. Importez simplement ce matériel. Puis il est resté moins rigide. Et page d'accueil. J'ai créé ce rigide quelques secondes en utilisant quelques extensions ici. Vous pouvez donc également ajouter ces extensions. Oui, je change vraiment l'espace pour le corps, puis le centre. Enfant. Écrivez simplement la page d'accueil. Nous allons évidemment modifier ces choses plus tard. Alors je me demande juste pourquoi ces lignes sont là ? OK, allons-y encore une fois. Accédez à l'import de la page, mon TTL, puis à la date moins rigide. Nommez-le Start. Revenez ensuite, échafaudage, puis corps, puis centre. Je vais à nouveau simplement écrire le nom de la page pour le moment. C'est une page noire. C'est un mot en N, n'est-ce pas ? OK. Mais plus tard, nous devrons évidemment supprimer cette constante. Et maintenant, voyons ce qui se passe dans les vidéos suivantes. Maintenant, tout est fait ici. Ensuite, dans la vidéo suivante, nous travaillerons sur la partie authentification et les pages. Cela dit, en regardant la vidéo suivante. 4. Configuration de l'écran d'Auth: Bonjour. Il est maintenant temps d'en apprendre davantage sur l'authentification des utilisateurs dans Superbus. Accédez au fichier principal à points et supprimez tout ce qui se trouve en dessous, mon application. Supprimons-le. Je vais également supprimer ces commentaires juste pour le rendre propre. Créez maintenant un nouveau widget dynamique et nommez-le. C'est-à-dire avec stayed for rigid et nommez-le art. D'accord. Maintenant, dans cette page d'art, nous allons afficher ou rediriger vers la redirection l'utilisateur, selon que l'utilisateur est déjà authentifié ou non. d'autres termes, nous allons simplement vérifier si un utilisateur s'est déjà connecté ou s'il s'agit d'un nouvel utilisateur. C'est donc ce que je vais faire ici. Tout d'abord, je vais créer une super instance de base. C'est une instance aveugle. Supposons que always supervise soit égal au client d' instance point des autoroutes. C'est ainsi que nous appelons les fonctions fournies par Superbus. Après ça. Donc, les fournitures, les cadeaux, nos retours en tant qu'utilisateur. Je vais juste avoir cette variable utilisateur. N'oubliez pas que cela vient de Superbus. Je l'attribuerai simplement à cet utilisateur plus tard. Et maintenant, je vais juste vérifier si l'utilisateur est égal à null. Ensuite, je vais créer cette page qui est une page sombre. J'ai cette page. N'oubliez pas dans la dernière vidéo ou sur la page d'accueil. C'est simple Ça l'est. Si l'utilisateur y est déjà, connectez-vous directement, connectez-le à la page d'accueil, sinon il lui demandera de se connecter. Ici. Faites de cette page la page d'accueil. Et maintenant, notre laboratoire de matériaux. C'est chose faite. Maintenant. Ce que nous allons faire, ce sont des super moyens, des cadeaux, peu de fonctions, c'est-à-dire pour entrer dans l'utilisateur. C'est la commande. Donc, le point de Bobby est entré dans l'utilisateur. Tellement sympa. commande renvoie un objet utilisateur. OK, c'est aussi simple que ça. Créons maintenant la fonction future. De toute évidence. Cela ne prendra que quelques secondes. C'est pourquoi ce nom est devenu une œuvre d'art. Un lavabo. J'espère que vous savez que ce concept de base est ce que l'on appelle ce futur. Et parce qu'ils sont obligatoires pour ce cours. Maintenant, ici, je vais simplement indiquer que c'est cette variable utilisateur de cette commande, c'est User point, point, utilisateur actuel. Et ici, vous pouvez voir, cela nous donne cet utilisateur. Si vous le survolez, cela nous donne cet utilisateur, il peut être nul et avoir une valeur. Ensuite, ce que nous voulons, c'est écouter. Cela concerne notre changement d'État. Cela signifie simplement que si l'état de l' utilisateur change, c'est-à-dire l'utilisateur se déconnecte ou se connecte, notre page se rechargera. C'est-à-dire qu'il peut être renvoyé à la page d'accueil ou à la page d'accueil. Ici. Et ici. Devons-nous écouter ? C'est l'événement. Et maintenant, nous allons mentionner l'état défini. User est un appel à event point session dot user, et cela peut également être nul. Donc, si ce n'est ni l'un ni l'autre, attribuez simplement la valeur nulle. Si tu l'as survolé. Tu vois, c'est un jeu en tant qu'utilisateur. Cela signifie donc simplement obtenir l'utilisateur actuel. Vous pouvez soit utiliser notre fonction utilisateur Dark Current. Il existe également cette fonction. Cette session. À partir de la session, vous pouvez obtenir les détails de l'utilisateur. D'accord ? Maintenant, je vais appeler cette fonction dans l'état init. est-à-dire que lorsque cet écran est affiché, la première chose que vous, lui, faire pour cette fonction est de l'appeler. Et après cela, en fonction de la valeur utilisateur, l'écran sera renvoyé. Donc, ce truc est prêt. C'est l'heure. Nous exécutons l'application. Et je vais aussi simplement le changer pour qu'il s'appelle Florida Superbus. Et j'ai la page d'accueil sous forme d'art en ce moment. OK, faisons en sorte que cela soit constant plus tard. Si nécessaire, je le modifierai. Et je vais également supprimer ce binaire de débogage. Maintenant, vous exécutez cette application. Vous pouvez utiliser un appareil virtuel, mais également votre appareil physique. Vous pouvez vous connecter via un câble USB et activer le débogage, le débogage sur votre appareil mobile. Mais je vais simplement utiliser un émulateur. Allez en haut et Android Studio ici plus d'actions que Virtual Device Manager. J'ai déjà créé cet appareil, mais vous pouvez en créer un nouveau à partir d'ici. Et voyez, j'utilise le pixel pour l'API 30 et je lis 11. Nous allons simplement commencer ici. Si votre système n'est pas puissant, je suppose qu'Android Studio le ralentira ou que l' Arctique sera lent. Vous avez maintenant votre appareil ici. Et vous pouvez voir dans ce VS Code mon appareil est maintenant actif. Je vais juste courir et commencer le débogage. Heure. Cela prend du temps. Il faut donc attendre et avoir des patients. Je voudrais simplement dire que, supposons que vous souhaitiez en savoir plus sur l'authentification, les fonctions et les terminologies, vous pouvez vous rendre sur le site officiel de Supervision. Ici, vous en saurez plus sur les sessions actuelles des utilisateurs et tout le reste. Mais il y a surtout peu de choses, seulement quelques mots clés et je pense que c'est un anglais très simple. Cela ne devrait donc pas être si difficile à retenir. Cela prend du temps, mais je suppose que nous devons attendre. n'y a pas d'autre solution. Et voyez. J'ai cet avertissement. Ce n'est pas comme si l'application ne s'exécutait pas, mais j'ai cet avertissement ici qui consiste à modifier la version du SDK du compilateur. Je vais donc vous montrer comment procéder. Mais si vous n'obtenez pas ces lignes rouges, alors c'est bon. Mais dans mon système, j'ai la mise à jour. Mais comme vous pouvez le constater, il s'est construit avec succès. Je sais que cela a pris beaucoup de temps. J'espère que votre système ne prendra pas ce temps. Voyons ce qui est rendu au début ou à la maison. voyez, nous avons cette troisième page ici. L'application fonctionne donc correctement, c' est-à-dire que Superbus est également connecté et qu'il n'y a aucun ajout. Et je vais également vous dire comment résoudre ce problème. Fermer. Je suis juste en train d'arrêter l'application. Alors. Accédez au dossier Android, puis à l'application, puis créez le fichier Gradle. Ici. Vous verrez le 29 sous-jacent. Cette version du SDK de compilation. Ne compilez pas la version du SDK. Je vais juste supprimer le battement et c'est vrai, 33. C'est ça Et enregistre-le. Et maintenant, il suffit de recommencer et de recommencer pour qu' ils commencent à déboguer. Et j'espère que vous ne verrez aucune ligne rouge ni aucun avertissement ici. Je ne veux pas recommencer, attendre que cette application s'exécute. Alors rendez-vous dans la prochaine vidéo. 5. Travailler sur l'interface utilisateur de StartPage: Bonjour, bon retour. Vous pouvez donc voir dans la console de débogage qu' il n'y a aucun avertissement après le changement, le compilateur a une version du SDK obsolète. Il est temps de travailler sur l'interface utilisateur de la page d'accueil. Il s'agit de la page où l'utilisateur peut se connecter et s'inscrire. La première chose à faire est d'en faire une version complète de l'État. Parce que nous travaillerons évidemment avec de nombreux États. Et commençons à écrire nos états. La première chose est que l'instance client Super Ways. Donc, le client point instance de Bobby. Ensuite, nous avons la valeur booléenne de E indique que lors du chargement, elle sera fausse pour la première fois. Et une autre est, ce n'est pas le cas, c'est que je vais simplement écrire le chargement de l'inscription, comme ceci, chargement de la connexion, et ici ce sera le chargement de l'inscription. C'est faux également. Ensuite, connectez-vous et vous inscrivez, j'aurai besoin des baleines fiscales que j'ai. Ce contrôleur d'édition de texte est le concept de Flutter. Et évidemment, l'e-mail est leur mot de passe également. Le contrôleur de bus est égal à x Everything Controller. Ensuite, nous utiliserons le widget de formulaire dont nous avons besoin. Sur clé. Ce ne sont que de la syntaxe. Vous devez vous rappeler que ces formulaires peu volumineux indiquent la valeur nulle. Et je me souviendrai toujours de disposer des états qui ne le sont pas tous, principalement à des fins d'exemple. Et le montage des decks et le soda plus frais, il n'y a pas de fuite de mémoire. OK, Non, descends en dessous. Et il avait dans son corps, j' aurai ce centre. Mais chez cet enfant, cet enfant aura la forme vision et la bombe aura colonne k, c. Et un an est une valeur obligatoire de K G, N ici, puisque allons-y et vérifions-la. Oui, Foleys est là, d'accord. Les constantes ne devraient pas être présentes. C'est ça. C'était le problème ici. Est-ce que ça ne devrait pas être constant. Non. Nous utiliserons cette propriété de colonne qui est l'alignement principal, l'alignement moyen existe, le centre de données d'alignement. croix x représente la terre, l'excédent d'alignement brut est au centre et n'est pas centrée. Oui, tu t'étires. Et je vais emballer ce formulaire. Quel enfant célibataire ? Vue déroulante. n'y a aucune erreur lors de la saisie. C'est-à-dire que lorsque nous saisissons un e-mail, aucun mot de passe n'est ajouté. disant que c'est l'interface utilisateur, j'ai juste oublié l'additionneur, mais si vous supprimez le défilement à canal unique, vous y arriverez. Je vais vous le montrer plus tard. Après ce forum. Dans cette chronique, je vais donner quelques précisions sur ce type de comportement. La première chose, c'est que j'obtiendrai toujours une image réseau. Accédez simplement à Google Images et à l'icône du logo Serge Superbus. Je vais juste ouvrir l'image. Ici. Sont la colle. Copions l'image et voyons s'il s'agit d'un point PNG ou non. Savoir. Cela peut en donner un peu, car vous ne devriez pas avoir d'image portant cette extension. Copions l' adresse et la base de cette image. C'est mon image. Ouvrez simplement cette même image. Et maintenant, comme copier l'adresse de l'image. Maintenant, si je le colle, vois que cela a cette extension PNG. Et j'ai vraiment donné. Hauteur maximale de 150. Sauvegardez-le. Vous avez une application en cours d'exécution. Je ne sais pas ce que Stat Edit. Ok, il y a un problème. Ce sont trois images solides que le réseau est là. Je ne pense pas. Il devrait y avoir une erreur, mais je viens de redémarrer. Encore une fois. Je vais juste changer l'image. Nous allons obtenir des données et encore une fois, nous utiliserons cette image. Robe B major. , c'est tellement drôle qu'on ne peut pas obtenir d'image. Mec. Et voyons voir, utilisons d'autres trucs. Je vais juste donner d'autres widgets et, plus tard, des gènes tels que cette image, ce champ e-mail, mot de passe, cet ami. Le champ suivant. Et je vais juste utiliser une boîte de taille, leur donner de l'espace. Et bouton surélevé. Avoir une connexion. Voyons voir. Y en a-t-il ajouté ici ? Je vais juste l'arrêter et le relancer. Nous avons cette sortie ici. Le logo, deux champs de texte, n'importe quel bouton de connexion. J'aurai également un bouton d' inscription ici, et j'utiliserai simplement Divider. Soyez const. Alors. Il suffit d'avoir un bouton de plan et de s'inscrire pour élever des enfants. C'est ça. Nous avons donc l'échafaudage et literie centrale est là. D'accord. Maintenant, décorons le formulaire de texte pour que le champ e-mail coïncide. J'utiliserai le validateur pour m'assurer qu' il n'est pas soumis. Vide. La valeur est égale à null. Le point de valeur est vide. Nous reviendrons simplement, si nécessaire. Sinon, si tout va bien, renvoyez simplement null. C'est-à-dire qu'il n'y a pas d'erreur de validation. Ensuite, nous avons le contrôleur en tant que contrôleur de courrier électronique. Déclaration. Et mettez de la décoration. L'étiquette est égale au courrier électronique et adresse e-mail à point de saisie au clavier. Maintenant, allez dans le bus pour le champ du mot de passe. Nous avons maintenant un validateur. Si la valeur est égale à null et si la valeur est vide, retour est requis. Rl. Allumez donc cette manette, nous avons une décoration de manette tourbillonnante. Décoration, limite égale au texte, à l'épée et à l'obscurcissement. X est égal à vrai. En d'autres termes, l'utilisateur ne doit pas voir ce qu'il tape. Maintenant, enregistrez-le. Consultez notre application et voyez qu'elle a l'air décente. s'agit évidemment pas d'un cours d'interface utilisateur. Notre objectif est d' apprendre le Superbus. En eux. la vidéo suivante, nous allons apprendre comment implémenter les fonctionnalités de connexion ou d'inscription. Et Q. 6. Mettre en place l'inscription et la connexion: Bonjour, nous avons donc notre interface utilisateur prête. Il est maintenant temps de mettre en œuvre ce signe de fonctionnalité. Cette instance de Superbus contient donc de l'art, comme vous l'avez vu ici, qui se trouve dans le fichier main.out. La fonctionnalité d'inscription des partenaires. La syntaxe est similaire à la syntaxe. Super moyens de ne rien faire, de l'art, pas de s'inscrire. Et ici, nous devons envoyer un e-mail et un mot de passe. C'est ça. Il s'agit de l'index de liste requis. Et il nous renverra la session ainsi que l'utilisateur. Maintenant, pour implémenter cela, notre bouton d'inscription se trouve ici. Tout d'abord, je vais simplement vérifier que c'est l' inscription en cours de chargement, est-ce là, puis l'indicateur de progression circulaire géant Const Center . C'est pour cet indicateur de progression ou bien Passons à la pression et faisons de cet enfant une constante. Maintenant, la première chose que nous devons vérifier dans le formulaire est valide. Ceci est valide et est égal à l'état actuel du point qi de la bombe. Ne vous y attardez pas. La première chose à vérifier est de savoir si c'est valide ou non. Et si c'est le cas, si ce n'est pas correct, attribuez simplement la valeur null. Maintenant, nous avons une déclaration if. Si c'est valide, pas égal à vrai, alors nous reviendrons simplement à partir d'ici. Sinon, nous enverrons le ministère des Transports de l'État. chargement de l'inscription est vrai. Oui, nous allons montrer un indicateur de chargement. Ensuite, nous allons tout y emballer, un bloc d'essai. Maintenant, essayons une super méthode étrange. Inscrivez-vous point, point comme ça. Et ici, pour l' e-mail, nous devons écrire un contrôleur de courrier électronique, pas du texte. Et pour le mot de passe, le texte du nœud du contrôleur de mot de passe. Et après cela, nous n'aurons plus que messager, le snack-bar. Succès. Pour l'automatisation. Email envoyé, couleur de fond, couleurs, vert foncé. Et cela peut être constant. Et je suppose que ça t'attend. Nous avons des jours de domaine sur Press Sync. Ensuite, nous nous enverrons des données. Le chargement de l'inscription est égal à faux. C'est ça. Maintenant, et s'il y avait un messager attentif qui pas de contextes qui montrent les inconvénients des snack-bars. inscription au Snack Bar x Allons-nous échouer ? Aucune couleur de fond. La couleur est rouge. A et nous devons à nouveau définir Destined sur false, c'est-à-dire vous inscrire. Le chargement est égal à faux. Nous essayons donc d'abord d'enregistrer le temps qui m'a été donné, qui nous a été donné par Superbus. Et puis nous montrons le snack-bar. Si c'est confirmé ou si c'est le cas, s'il y en a un ajouté, nous montrerons également le snack-bar. N'oubliez pas que Superbus active par défaut la vérification des e-mails, ce qui signifie que lorsque vous utilisez l' authentification Superbus avec ces paramètres activés, vos utilisateurs doivent vérifier leur adresse e-mail pour que les comptes soient actifs. Vous pouvez également le désactiver en accédant à l'option Paramètres dans la section d'authentification. Maintenant, nous avons cette méthode d'inscription, revenez simplement, écrivons également cette connexion. Et après cela, nous le déclarerons. De même. Pour la fonctionnalité de connexion. C'est l'index de base qui contient des super moyens, et non de l'art, à ne pas dire avec un mot de passe faible comme celui-ci. Mais c'est cet indice. Ici, nous devons donner un e-mail et un mot de passe. Il s'agit d'une syntaxe. Notre connexion. Allons-y. Disons que nous avons ce bouton surélevé ici. Oui. Fais-le couler. Il s'agit du bouton de connexion. Après le filet. Beaucoup de choses seront similaires, comme tout d'abord, nous vérifierons si le chargement de la connexion est vrai. Puis const center child. Cool. Indicateur de progrès. Et après cela, nous ferons comme acheter une ligase. Encore une fois, copiez également. Pourquoi perdre du temps. D'ici à ici. Copions tout. Je suis resté ici. Et maintenant, voyons tout vérifier. Ça le dira. Et pendant le chargement. De même, ce sera signer, se connecter. Alors ce sera, disons, en poids. D'autres choses. C'est ce que nous disons et nous n'en avons pas besoin, car cela se trouvera directement dans la page d'accueil. Mais ici, il ne nous reste plus qu'à nous connecter. Et c'est tout. C'est donc chose faite et j'espère que cela fonctionnera. Nous avons rédigé avec succès l'inscription ainsi que les fonctionnalités. Dans la vidéo suivante, nous allons maintenant tester le fonctionnement de ces fonctions ainsi que le design. Merci. 7. Fonctionnalité de déconnexion: Bonjour, il est temps de tester la fonctionnalité. Écrivons un e-mail et un mot de passe 12345 et cliquez sur S'inscrire. Voir e-mail de réussite, centime de confirmation. Nous devons maintenant accéder à cette adresse Gmail et cliquer sur Conformation. Passons à Gmail n. Lorsque vous accédez à la section d'authentification et que vous rechargez. voyez, nous avons cet e-mail ici et il est écrit pour vérification. Et ici, il vous suffit de cliquer sur le Z-disc, de confirmer votre e-mail. Et maintenant, ça ne servira à rien. Mais si nous rechargeons la section d'authentification, assurons que la vérification est terminée. Maintenant, si nous y allons nous avons déjà l'e-mail et le mot de passe. Comme nous n'avons pas dit que les états étaient supprimés, nous pouvons tester directement l' attribution de fonctionnalités. Cliquons dessus et voyons. La page d'accueil est ouverte. Vous pensez peut-être que nous ne naviguons pas après l'inscription, la connexion. C'est-à-dire que nous avons ce panneau ici. Nous ne naviguons pas. Mais si nous passons au fichier point principal, ici, nous écoutons le changement d'état de l'art. C'est pourquoi il nous renvoie automatiquement à la page d'accueil. Maintenant, sur la page d'accueil, nous avons un simple bouton pour implémenter également cette déconnexion. Accédez à la page d'accueil. Ici. Ajoutons les importantes NANDA autoroutes matérielles importantes de la NANDA. Et je suis maintenant directement dans l'application, mais j'aurai un bouton. Des actions. Ensuite, je peux appuyer. Je peux l'être, je ne peux pas me déconnecter de celui-ci. Rends-le constant. Et pour implémenter sur presse abord BAA, une instance supervisée. La base de clients des batteries est égale à celle du client point instance de Bobby. D'accord ? C'est de la syntaxe. Ici. Cela ne peut pas être constant. Maintenant, la syntaxe de psi naught est encore une fois très simple. Connaissez les autoroutes, pas, ne déconnectez pas. C'est ça C'est le seul que l'on appelle calme. Maintenant, après l'avoir enregistré, si je vais dans l'application et que je clique ici, c' est-à-dire ce bouton de déconnexion, cela devrait nous rediriger vers la page de démarrage. C'est la page d'accueil, disons C. Maintenant, nous sommes redirigés vers la page de connexion. Nos fonctionnalités d'inscription, de connexion et de déconnexion fonctionnent donc parfaitement. Dans la vidéo suivante, nous allons découvrir un concept connu sous le nom de lien profond. Merci 8. Intégration de lien profond: Bonjour, bon retour. Dans cette vidéo, nous allons travailler sur cette intégration de liens profonds dans notre application. authentification par mot de passe par e-mail fonctionne donc. Mettons en place des liens profonds pour que les utilisateurs qui se sont connectés via un lien magique ou externe ou non, c'est-à-dire Google ou Facebook, puissent revenir l'application dont vous aurez besoin pour accéder au compte de votre superviseur, à savoir Dashboard. Cliquez ensuite sur Authentification. Je peux ensuite cliquer sur Configuration de l'URL. Vous trouverez ici ces steadies, redirections, URL, URL que les fournisseurs étranges sont autorisés à rediriger. Après authentification. Cliquez simplement sur Ajouter une URL et cliquez sur le point io droit. Super moyens pour mon application de se connecter en double barre oblique. Je trouve Fall Back, c'est tout. Cliquez ensuite sur Ajouter un domaine. voyez, nous avons cette URL de redirection ici. Vous pouvez renommer cette application my flutter et ce rappel de connexion. Mais j'ai essayé de changer ce truc qui est io point Superbus et cela m'a donné un moment de redirection. Donc, si vous le souhaitez, vous pouvez l'essayer vous-même en donnant différents noms. Maintenant, la prochaine étape pour les liens profonds est d'ajouter du code. Dans le dossier Android et iOS. Vous pouvez simplement consulter la documentation de Superbus et en savoir plus sur la configuration du jeu C. Nous avons ajouté cette URL de redirection ici, ils utilisent un Quickstart plus plat. J'ai ensuite changé le nom pour Android, ajouté la source des applications Android et AndroidManifest.xml. Alors allons-y. source de l'application Android signifie AndroidManifest.xml. Et en dessous de ce IntentFilter, nous devons copier ce truc. OK, copiez simplement celui du milieu. Allez-y. Et ci-dessus, voici l'activité de clôture. Il suffit de le coller. Ici, changez ce schéma. C'est votre application rechargée. Et l'hôte est le même, c'est le rappel de connexion. Nous sommes rentrés, d'accord. Ce que nous n' avons pas à faire. Maintenant pour iOS. Nous devons procéder à ces changements. C'est essentiel. Il suffit de copier ce truc au-dessus du piège final. Passons au dossier iOS. Alors. Exécutez notre fichier info.plist. Ici. Dans cette position. Il suffit de le coller. Et encore une fois, modifiez cette chaîne ici. C'est mon application préférée. C'est ça. Période. Après ces modifications, arrêtez simplement votre application. Assurez-vous de tout enregistrer, puis exécuter à nouveau afin que ces modifications soient reflétées dans l'application. Voilà pour ce lien profond. Dans la vidéo suivante, nous verrons comment implémenter la connexion à Google dans notre application. Merci. 9. Configuration de Google Oauth: Bonjour, pour activer l'authentification Google dans notre projet. Tout d'abord, nous devons configurer Google Art et obtenir ces informations d'identification. suffit donc d'ouvrir votre navigateur, d' aller sur cloud.google.com, vous êtes déjà connecté par défaut. Sinon, connectez-vous simplement avec leur compte Google, puis cliquez sur Console. Maintenant, j'ai déjà ce projet, mais vous ne le verrez peut-être pas. Vous pourriez voir ici comment sélectionner le projet. Cliquez ensuite ici. Cliquez ensuite sur Créer un nouveau projet en haut. En nommant simplement le projet, j'écrirai son inondation. L'ampoule l'est. D'accord. Cliquez ensuite sur Créer. Elle crée. Maintenant, comme vous pouvez le voir, il vous suffit de sélectionner le projet nouvellement créé. Maintenant, vous pouvez voir ici que vous travaillez en Floride. la pauvreté est donc la prochaine étape à franchir : créer les clés de notre projet. Dans la barre de recherche. Ici, tapez simplement AUD. Cliquez sur l'écran de consentement. Sélectionnez ensuite cette option externe à partir du type d'utilisateur. Simplement externe au laboratoire. Cliquez sur Créer. Il vous suffit ensuite de remplir ce formulaire. Je dirai simplement qu'il s' agit de l'e-mail d'assistance du fournisseur. Je n'ai pas de logo. Domaine. Ici aussi, tout simplement. Je suppose que rien d'autre n'est obligatoire. Cliquez sur Enregistrer et continuer. Maintenant, la prochaine chose que vous devez faire est de trouver votre URL de rappel. Nous n'avons donc pas à remplir les et les utilisateurs d'OwlTest pour le moment, il suffit de se rendre sur le tableau de bord Here Supervisor. Ici. Cliquez sur l'option de configuration du projet, puis sélectionnez l'option API. Vous pouvez maintenant voir l'URL du projet. Cliquez sur celui-ci, copiez-le. Et puis accédez à nouveau à la console Google. Cliquez sur Informations d'identification. Cette option. OK, oui, puis cliquez sur Créer des informations d'identification pour choisir l'ID client OT. Maintenant, le type d'application, je vais simplement choisir une application Web. Puisque nous avons Android, iOS et Web Meeting. Maintenant, le nom sera flou. Super client Web. C'est alors important dans la redirection autorisée, l'URI. La première base, c'est celle que vous avez copiée depuis le tableau de bord de la super base. Ensuite, à la fin, n'oubliez pas d'ajouter ces lignes qui sont barre oblique et un rappel point contre 1 point. Ce truc, tu dois simplement t'en souvenir. Ensuite, vous devez écrire ces lignes pour qu' elles soient redirigées vers notre application. Ensuite, cliquez simplement sur Créer. Après cela, nous obtiendrons les informations d'identification. Copiez et collez les valeurs ici car vous en aurez besoin plus tard. Ensuite, passez simplement à l'authentification. Donc Bobby, parce que maintenant nous le sommes et nous allons utiliser ces informations d'identification ici. Cliquez sur les fournisseurs, puis recherchez Google. Et vous pouvez voir qu'il demande un identifiant client et un secret client. C'est ça. Et voyez l'URL de redirection sous forme de rappel slash v1 slash. Copiez maintenant cet identifiant client. Déclarez ici. Encore une fois, copiez l'état du secret du client ici, puis cliquez sur Enregistrer. C'est ça. Nous avons terminé toutes les étapes et avons correctement configuré la connexion à Google pour notre projet. Dans la vidéo suivante, nous travaillerons sur l'interface utilisateur ainsi que sur la mise en œuvre. Merci 10. Implémenter une connexion Google: Maintenant, c'est l'heure. Comme tout est terminé, nous implémentons la connexion à Google dans notre laboratoire Flutter. Tout d'abord, créons le bouton sur la page d'accueil. Après ce bouton d'inscription. Simplement la ligne. Ensuite, nous avons des enfants. Et ces enfants. La première chose que nous aurons est l'expansion de la région. Et au sein de cette région élargie, nous aurons une division. Nous l'aurons. Comme toujours, vous pouvez modifier l'interface utilisateur en fonction de la vôtre. Pour moi, il ne s'agit pas d'un tutoriel sur une très bonne interface utilisateur, quoi que ce soit de ce genre. ensembles de gènes qui sont des enfants liront le texte. Et puis encore une fois, j'ai un dicton qui se répand je veux juste ce truc. Mais l'utilisateur sait qu'il peut se connecter avec son adresse e-mail ou qu'il peut directement se connecter. Ici. Vous pouvez simplement lui donner une const. Et je vais supprimer le séparateur précédent. Celui-là. Si tu veux, tu peux le garder. Je veux juste ce séparateur ici. Et maintenant. Après cette ligne, puis dramaturge, dessinez, appuyez sur le bouton, l'icône et appuyez sur. Gardez-le comme ça. Étiquette. Devrions-nous alors faire de la musique avec Google. Ensuite, dans l'icône, j'aurai un réseau de points d'images. J'utilise simplement une image réseau ici. Je voulais juste que ce soit très simple. Et la hauteur de cette image fera également D. Et recherchez simplement n'importe quelle image sur Google. Ensuite, le logo Google est transparent. Et je vais simplement copier l'adresse de cette image et la coller ici. Sauvegardez-le. Tu vois, ça a l'air décent. Maintenant, pour implémenter la fonctionnalité de connexion à Google. Tout d'abord, créons un nouveau bouton. Ce bouton n'est pas un booléen. Connectez-vous à Google. Le chargement est appelé faux, comme ceci. Ensuite, cliquez sur ce bouton de plan et écrivez simplement si la connexion à Google est vraie, puis, comme d'habitude, affichez et écrivez simplement si la connexion à Google est vraie, puis, son indicateur de progression circulaire. Et comme c'est déjà le cas sur site, faites-en un évier. Et maintenant, nous allons écrire le code. La première chose que nous ferons est de définir l'état. chargement de la connexion à Google est égal à vrai. Ensuite, nous avons ce bloc «  try and catch ». C'est une syntaxe, une syntaxe pour Google. Connectez-vous. Tout de suite. autoroutes où l'art danse à la largeur des panneaux, comme celle-ci. D'accord. Dans ce fournisseur, écrivez simplement provider. Tu vois, tu as beaucoup de fournisseurs. Je vais utiliser Google. Ensuite, ils importent une chose importante, c' est le chemin direct vers ici. Nous devons d'abord faire cette vérification. C'est k is web, celui-ci. Donc, tout en haut, il y aura un point de base important, un point. est-à-dire que s'il s'agit d'un site Web , ne le faites tout simplement pas, c' est-à-dire ne l'écrivez pas. Rls. Utilisez l'URL de redirection, qui est io point. Scoop, toujours. My Flutter, mon application la plus flatteuse. Connectez-vous, rappelez, comme ça. C'est notre écriture dont je viens de me souvenir dans l'ordre profond des URL de redirection et tout ça. C'est le seul code acquis après cela, simplement dans ce drag, qui est catch block, n' est-ce pas ? Échafaudage. Messager contextuel, ne pas afficher le contenu des snacks, des snack-bars. La prochaine étape, comme ça. Si vous le souhaitez, vous pouvez modifier la couleur d'arrière-plan en couleurs L, accent rouge foncé. Et définissez l'état. La connexion à Google est égale à fausse. Nous avons un code redondant. Il est temps de tester. Si j'y vais et si je passe à notre authentification et à nos utilisateurs, ici, je supprimerai simplement cet utilisateur car j'utiliserai la connexion Google avec le même nom d'utilisateur. Maintenant. Nous allons le tester. Tout est enregistré. Oui. Continuons avec Google. C'est ouvrir un compte. Oui. Je vais le choisir. Il aurait dû se lire dirigé. Voyons pourquoi. Ici. Je suppose que nous avons la connexion à Google, mais elle n'a pas été redirigée. Il doit y avoir un problème ici. Tu vois, il aurait dû être réélu ici. Redémarrez K Phi ici, rien ne se passera. Il vous suffit de supprimer cet utilisateur. Et dans les baux, fournissez une configuration d'URL. Voyons ce qui se passe si je supprime cet hôte local dans les URL de redirection directe de l'UE. Laissez-nous voir. À mon avis. C'est la bonne. Je vais juste attaquer le cerf à nouveau. Sauvegardez-le. OK, réessayons. Cliquez pour continuer avec Google. Et voyez. Je suppose que vous n'avez pas pu comprendre pourquoi il a été redirigé vers notre application. Mais j'ai dit qu'il y avait un problème. Je supprime simplement l'hôte local que vous localisez des URL du rédacteur. Et pour l'instant, tout va bien. Cela fonctionne très bien. Vous pouvez voir que Google est là ? Eh bien, oui, c'est ça. Notre indication est donc également terminée. J'espère que vous avez apprécié. Dans le module suivant, nous allons apprendre à utiliser base de données dans Super Base et à Flutter dans la file d'attente. 11. Travailler sur l'interface utilisateur crud: Bonjour, bienvenue dans cette toute nouvelle vidéo. Il est maintenant temps de commencer à en savoir plus sur les bases de données dans Superbus. Superbus fournit une interface utilisateur Web qui nous permet de gérer et d' interagir facilement avec notre base de données relationnelle. Cette interface fournit diverses fonctionnalités permettant de créer et de modifier des tables, de gérer des données et d'exécuter des requêtes SQL. Donc, ici, vous pouvez voir cet éditeur SQL, allez-y. Le truc, c'est de superviser, vous devez définir vos tables et vos colonnes à l'avance car vous pouvez commencer avant pouvoir commencer à y insérer des données. Cela est dû au fait que Superbus est construit sur la séquence Postgres, qui est un système de gestion de base de données relationnelle. Et cela nécessite un schéma prédéfini pour stocker les données. Alors ici, allez simplement là-bas, accédez à cet éditeur SQL. Ou si nous allons dans la base de données, voir également ici, nous avons la même chose, une nouvelle table. Cliquez simplement sur le nouveau tableau et maintenant vous donner un tableau, un nom. Je vais l'appeler « tâches à faire ». Maintenant, je vais désactiver cette sécurité au niveau des lignes pour l' instant et l'activer en temps réel. Parce que, évidemment, nous allons également apprendre à utiliser les données en temps réel. Maintenant, ci-dessous, vous pouvez voir qu' il existe deux colonnes prédéfinies. C'est un identifiant et créez un at créé. L'identifiant est réel. Générez automatiquement un identifiant et vérifiez que ce principal est. Maintenant, voici. Cliquez simplement sur Ajouter une colonne. Alors. De plus, je vais écrire le titre et lui donner du texte. Cela dit. Et le second écrira l'identifiant de l'utilisateur , car il est évident que nous devons également stocker l'utilisateur. Et ici je vais l'utiliser. Ensuite, vous pouvez également l'utiliser comme teaser. Mais la fonction Supervisor renvoie cette variable utilisateur ou l'ID utilisateur sous forme de chaîne. C'est pourquoi j'utilise de la ficelle. Et plus tard, nous devrons apporter quelques modifications, ou vous pouvez également dire convertir, que nous le fassions à ce moment-là. Nous avons donc la colonne, nous avons le nom et ce sera en temps réel , puis cliquez sur Enregistrer. Oh Kay. Et si je vais à la table, eh bien, éditeur également, je m' assure que nous avons notre table. C'est perdre. Également. J'utilise ce nouvel émulateur. C'est-à-dire que j'ai connecté mon véritable appareil car versions antérieures d'Android Studio étaient très en retard. C'est pourquoi. Avant de passer à l'apprentissage des opérations de base, nous allons d'abord travailler sur certaines parties de l'interface utilisateur. Créez un nouveau fichier dans le répertoire des pages. Alors joue bien. Créez une page, un point, point et un point, un point. D'accord ? Donc, dans la page Create, le père importe simplement du matériel, puis le tue. Ils sont restés entièrement rigides en nommant la page de création. Ensuite, la première chose que nous ferons, comme toujours, est de faire en sorte qu' un booléen excluant soit égal à faux. Et nous allons créer, il faut tout contrôler, car évidemment si nous créons quelque chose, il y aura un champ suivant impliqué. Et je vais l'appeler Title. Le contrôleur est égal au contrôleur d'édition x. Comme ça. Maintenant, retournez simplement une barre d'échafaudage. J'achète des obligations. Ensuite, créez des données. Puis dans le corps en ajoutant des liens rigides et des idées selon lesquelles 15 ans et cet enfant ont une colonne. Discutons avec ces enfants. Et disons X3. Et aussi, comme une seule date de publication des textes, c'est pourquoi je n' utilise pas ce formulaire et je vais laisser ce formulaire de texte échouer en clé étrangère. Encore une fois, c'est très simple. Comme la déclaration du contrôleur Dell, Const, input, declaration, int x. Le titre et la bordure. Donnons-lui une bordure, c'est un contour dans la bordure du coffre. K. Après ce TextField. Donnez un peu d'espace à l' aide de sa boîte de sa taille. I, puis bouton surélevé, Créer et le rendre constant. OK. Nous aurons cette page de création et nous la verrons certainement sur notre appareil. Mais d'abord, créons également notre page d'édition. C'est similaire à la page de création, mais la seule différence est que nous acceptons des données et les attribuons. Contrôleur d'édition de texte. Il vous suffit de vous rendre ici. Importez du matériel. Page d'édition dynamique et rigide. Ici. Avec ce constructeur, nous accepterons deux choses. Chaîne finale, données, int final, identifiant. Ensuite, nous l' accepterons simplement, comme nous avons édité cet ensemble de données. C'est ça. Maintenant, comme toujours, c'est pareil. Le booléen indique que le chargement est égal à faux. Contrôleur d'édition. Le contrôleur va faire le contrôleur d'édition X comme ceci. Et maintenant, dans l'état d'initialisation, ce que nous allons faire, c'est dire que je leur ai donné de la valeur aux données. Ce jeton est plus frais, scories, rigide , petit, rigide, pas de données comme celle-ci. Maintenant, passons à notre page de création et copions simplement cet échafaudage. Échafaudage. Nous avons ici. Maintenant. Ce seront des données ajoutées. Le contrôleur est là. Ce sera un rendez-vous. C'est un rendez-vous. Je suis juste en train de réfléchir. Que pouvons-nous faire ? OK, faisons-le ici comme ça. Si le chargement est égal à vrai. Si le chargement est vrai, désolé, équilibré, au centre, Jane, indicateur de progression circulaire. Ou bien j'ai une chronique. Avec cette colonne, disons que des enfants restent sur les trottoirs. Poids, infinité à deux points, hauteur. Mais je suis juste en train de créer le bouton de mise à jour ici. Rien de grand. C'est comme si on lui donnait toute la largeur. Bouton surélevé sur pression. Et l'enfant sera parti le lendemain. Comme ça. Dans cette colonne. C'est-à-dire que la boîte de taille donnera un peu d'espace à l'aide d'une boîte d'une autre taille. Moi ensuite, puis un diviseur. Et enfin, un autre bouton juste à cette fin de suppression. Car cet utilisateur ne peut supprimer que depuis cette page. Const. Je peux, je peux commencer à supprimer. Cette étiquette peut être constante. Ensuite, supprimez. Et donc du style. Donnons juste le style de Dan, couleur de fond, mon TDL, mon état, ma propriété, un point. Ces autres codes, vous devez vous souvenir que ce n'est pas moi qui les ai créés. Et enregistrez-le. En termes simples. La seule différence entre les deux pages est que nous avons également un bouton de suppression ici. Il suffit de tout enregistrer. Si vous souhaitez simplement consulter cette page. OK, passons à Main.out. Et au lieu de pages d'accueil, envoyez-le pour créer une page et enregistrez-le. voyez, c'est notre page de création. Et si nous modifions la page, elle demande deux arguments, une chaîne et un entier. String et sois bonjour. entier peut être deux. Si je l'enregistre. Et page de paiement. voyez, ce halo est déjà renvoyé ici parce que nous l' attribuons à l'état d'initialisation. Et cette mise à jour prend tout l'écran. Ensuite, nous avons ce petit diviseur. Il s'agit du bouton Supprimer. Ça a l'air décent. Encore une fois, remplacons-le par plus tôt. C'est la page d'accueil. Alors c'est tout. Dans la prochaine vidéo nous travaillerons sur l'interface utilisateur d'accueil, ainsi que sur la façon de créer, mettre en œuvre cette fonctionnalité, de créer des fonctionnalités. Et Q. 12. Implémentation de fonctionnalité Créer: Bonjour. Nous avons maintenant une page de création et une page d'édition prêtes. Il est temps de travailler sur la page d'accueil et de créer des boutons pour naviguer vers d'autres pages, ainsi que de travailler sur le corps de l'ensemble. Très rarement, nous allons récupérer et afficher les données créées. Alors allez à la page d'accueil. Ici. Donnons-lui un titre là-dedans, mais je vais juste écrire. Par la voie, c'est alors doter très haut. Importons, créons une page, importons, modifions la page. Commençons à travailler sur le corps ici. Et nous allons supprimer n. Nous utiliserons un générateur de points en mode liste. J'espère que vous connaissez tous ces widgets car ce sont là encore les bases de Flutter. Je déteste le pistolet. Et pour l'instant, je ne montre que des données factices. Et plus tard, nous remplacerons ces données par les données qui en proviennent. Superbus, Item Builder, le texte, l'index, la chaîne et les données sont égaux à des données fictives. Et le numéro d'index. Nous allons montrer ces chaînes de données. Renvoie ensuite le texte de style liste. Données, puis suivi. Disons d'un bouton en forme d'icône. Et l'icône aura une const. Je peux, je peux commencer une annonce ici, je pourrai commencer à la modifier. Et donnons-lui une couleur, des couleurs, du rouge. Et dans le système sur site, naviguons. C'est Navigator Dot Push. Sur les ponts. Dans cette mise en page de ma page TBL il y aura du texte et nous l'enverrons sur la page d'édition. Modifier les données n'est tout simplement pas une variable de données et des idées indexées. Encore une fois, ce ne sont que des bêtises. Et la prochaine chose que nous devons faire est un bouton d'action flottant créatif. Bouton d'action flottant. Enfant. Const, je peux, je peux mordre , ajouter de la poitrine. Et à partir de là, nous en avons terminé. Nous allons accéder au pont de création. Naviguez sur leur point, poussez. Ma page quotidienne, page de mise en page ici. C'est ça Sauvegardons-le et jetons un œil à l'application. Tu vois, ça a l'air très décent en ce moment. ne fait aucun doute que ce sont des données factices, mais il est très simple de les remplacer. Puisque l'interface utilisateur est prête, il est temps de travailler à l'apprentissage des opérations de certification, en commençant par la création de nos données d'insertion dans Superbus. Il vous suffit donc d'aller sur la page Créer. D'abord. Je vais vous donner un peu de syntaxe. Pour insérer un enregistrement, la syntaxe est très simple. Nous devons écrire qu'il s'agit d'une instance d' autoroutes, que cette instance client. Puis de, de nous emmène. Quel est le nom de la table dans laquelle les données vont être insérées ? Ici ? Tout simplement, par exemple nous avons des utilisateurs ou vous pouvez dire que nous avons les tâches à faire. Ensuite, la commande est simple, c'est-à-dire insérer, insérer. Et cette zone. Il s'agit d'un deuxième argument qui prend des données sous forme de carte, notre paire de valeurs clé comme celle-ci. Supposons que nous ayons alors une valeur, la valeur moyenne, puis la date, puis la valeur. Comme ça. Il s'agit de la syntaxe pour l'insertion. Et supposons que vous souhaitiez insérer plusieurs enregistrements à la fois. Il suffit donc de les insérer en les mentionnant. Dans une annonce comme celle-ci. Ensuite, de même, il y aura une date de livraison serrée et rentable comme celle-ci. C'est ainsi que nous pouvons insérer plusieurs enregistrements à la fois. Et maintenant, supposons que vous ayez inséré cette valeur et que vous souhaitiez la récupérer immédiatement. Pour cela, ce que nous pouvons faire, nous pouvons utiliser une variable qui est thêta égale à wait, comme ceci. Et à la toute fin, ajoutez simplement une sélection par points. Ici. Il récupérera les données insérées. C'est-à-dire que nous obtiendrons la réponse dans la méthode précédente qui utilise directement wait et sans utiliser le select, elle renvoie null en tant que réponse. C'est ça C'est ça Nous l'avons donc. Nous avons compris comment insérer des données. Il est maintenant temps de mettre en œuvre cette fonctionnalité de création. Le pire, c'est de créer une instance de supervision sur laquelle cette base de soupe est égale pour superviser ce client de démarrage d' instance. Créons ensuite une future fonction. Insérez des données. Comme ça. La première chose à faire est de régler le chargement. Ensuite, nous allons encapsuler le code dans un bloc try catch. Ici. La première chose dont nous avons besoin est d'obtenir le nom d'utilisateur. Et c'est ce que nous pouvons obtenir grâce à la méthode artistique qu'est Superbus, cet identifiant numérique utilisateur actuel. Il dit donc maintenant qu'il peut être nul. Mais comme nous savons que l' utilisateur est déjà authentifié, nous aurons cet opérateur car nous savons avec certitude qu'il y aura une valeur. Écrivons maintenant cette syntaxe. Il provient de Todos Dot Insert. Non la valeur sera dy del, del controller, point, txt, ID utilisateur. Allons-nous utiliser cette idée ? OK, ici. Une fois que tu l'as fait, c'était une erreur de ma part. Ensuite, je vais simplement naviguer et apparaître. C'est-à-dire Navigate, Gate the Pop. Et maintenant, faisons cette capture. Juste à des fins de débogage, j'apporterai des données. Insertion de données. Des jours de remerciement. Définit l'état si le chargement est égal à faux. Et le cuir chevelu pour Messenger n'affiche pas le contenu du snack-bar. Puis les choses ont mal tourné. Quittez cette grotte. C'est à mon tour de disposer de moi. Disposons que je dise au contrôleur de supprimer, de superviser de supprimer. Il y a donc du sodium, il n' y a pas de fuite de mémoire. Ici. Utilisez simplement le ternaire comme const, Center, Cooler, Progress Indicator. Et le Calder sur site. Insérez des données comme celles-ci. C'est ça Nous allons maintenant tester cette fonctionnalité. Si je clique sur oui. Et maintenant, si j' écris Barbies et que écris Barbies je clique sur Créer, alors c'est navigation que la fenêtre contextuelle s'appelait. Allons donc à la base de données et actualisons-la. voyez, nous avons supervisé l' apprentissage des données, nous avons le nom d'utilisateur. L'insertion de données fonctionne donc parfaitement. Dans la vidéo suivante, nous allons découvrir comment récupérer ces données et les afficher dans notre application. Merci 13. Implémenter la fonctionnalité de lecture: Puisque nous avons inséré des données avec succès, nous allons maintenant apprendre à récupérer ces données. Ainsi, power-based nous fournit une méthode sélectionnée pour récupérer des données à partir d'une table. Accédez simplement à la page d'accueil. Je vais simplement écrire l' index pour sélectionner les données. Et ici, c'est très simple. C'est un super chemin depuis nom de la table censé perdre et dire gauche. C'est donc la méthode que nous allons utiliser. Cela récupérera tous les enregistrements de ce jour, ce qui vous fera perdre. Également par défaut. Ainsi, la fonction basée sur la puissance renverra un maximum de milliers de lignes. De toute évidence, il s'agit d'un grand nombre de données. Mais si vous en demandez plus, ce paramètre peut également être modifié. De plus, cette syntaxe renverra toutes les colonnes. Supposons que c'est un nom pour parler de l'âge. Mais si vous le souhaitez, mais que se passerait-il si nous n'avions besoin que d'une colonne spécifique ? Il dit que c'est juste le nom de tous les enregistrements. Donc, ici, je vais simplement écrire ici, même dans la sélection. Il ne renverra donc que la colonne de titre. C'est ça. Ces deux-là, tu dois te souvenir. C'est une syntaxe très basique. Maintenant, écrivons une fonction pour récupérer des données. Ce sera un futur, et il finira par renvoyer une liste. Appelons-les données lues, et ce sera un récepteur. C'est très simple. Il suffit d'écrire. Le résultat final est égal à attendre. Les autoroutes de toutes les choses à faire. Ne sélectionnez pas cet ensemble et ne renvoyez pas ce résultat. Rien d'extraordinaire. Maintenant qu'il s'agit d'un futur dans le corps, nous allons utiliser un futur constructeur. Tout d'abord, je vais simplement le couper parce que nous allons le coller. Le futur sera le futur. Il possède alors deux propriétés. Le futur sera la lecture, les données et le générateur. Cela nous donne un contexte, ainsi qu'un aperçu du puits. C'est-à-dire que ce sont les données provenant de la base soma. Maintenant, nous allons d'abord, si Snapshot Dot a été ajouté, tout d'abord, nous écrirons si quelque chose ne va pas, renvoyer le centre de l'enfant, point instantané, le point deux flux. Écrivez simplement ceci directement. Ici. Je vais renvoyer un indicateur de progression circulaire pour enfants du Const Center. C'est pourquoi il est dans l'état de chargement qu' il essaie de récupérer. Nous aurons un indicateur de chargement sur cet écran. Et si Snapshot contient des données ? Encore une fois, cette syntaxe provient de. Le futur ne se régénérera pas. Ce n'est pas une syntaxe très éloignée. Si le snapshot contient des données, supposons que le superviseur ait renvoyé quelque chose, d'accord ? Et aucune donnée n'a été insérée. Dans ce cas. Je montre simplement un document rigide où il est renvoyé et où il est écrit. Aucune donnée, chaque étiquette comme celle-ci. Et si la longueur est supérieure à zéro, renvoyez une liste. Voir le point n ici. Le nombre d'éléments sera composé d'instantanés, données par points et de longueur de points. C'est le nombre de personnes qui vont venir. Créez simplement ce nombre de widgets. Et l'article apprendra. Il fournit des contextes et un index. C'est un index. Et maintenant, je vais revenir à cette vue de liste, d'accord ? Je vais retourner cet article. Dans ce générateur d'objets. La première chose à faire est que j'aurai une variable appelée var data, snapshot data et cet index. Vous vous souvenez donc que c'est sur la carte. Il s'agit d'un type de données cartographiques. Maintenant, je n'ai plus besoin de ces données factices. Le nombre d'articles sera sera correct. Je suppose que j'ai commis cette erreur ici. Je dois faire en sorte que la vue en liste supprime simplement simplement cela. Voyons quelles sont les données disponibles. Maintenant, je suppose que tout va bien. Le nom de la colonne est titre. Et ce que nous envoyons, c'est un index. Il s'agira d'un identifiant uniquement, et non d'un identifiant utilisateur. N'oubliez pas, car id est l'identifiant de ligne que nous voulons ajouter et il est unique. Le nom d'utilisateur sera le même pour toutes ses données. Kay ? Voyons s'il y en a une, s'il y a une erreur ou si tout fonctionne parfaitement. Apprenez à superviser, cela provient de la base de données. Et il y avait aussi un indicateur de chargement. Enfin, nous sommes en mesure de créer ainsi que les données. Dans la vidéo suivante, nous en apprendrons davantage sur la récupération de données. 14. Filtres et modificateurs: Bonjour. Dans cette vidéo, nous allons apprendre à filtrer nos données. Notre application récupère donc toutes les données. Mais dans la plupart des situations réelles, nous voudrions uniquement que l' utilisateur lise ses propres données. Nous permet de renvoyer uniquement les lignes qui répondent à certaines conditions. Les filtres peuvent également être utilisés avec d'autres méthodes telles que la sélection, mise à jour ou la suppression. Ces choses-là, nous les exécuterons plus tard. Maintenant, lisons ou comprenons certains filtres qu'il contient. Nous allons comprendre que le premier est égal à celui-ci récupère toutes les lignes dont la valeur de cette colonne correspond exactement à la valeur spécifiée. Tout simplement. C'est alors comme ça, c'est super loin. Supposons que nous ayons cette table appelée utilisateurs. Ensuite, nous allons sélectionner, cela récupérera tous les utilisateurs. Mais si nous lisons .eq, c'est égal. Et c'est-à-dire qu'une colonne de nom doit être égale à cette valeur. Il récupérera donc en direct cet utilisateur spécifique. Et ce nom est le nom de la colonne du couloir de la mort. Et c'est la valeur qui doit être égale. Cela équivaut donc au filtre ND. N'oubliez pas que cela équivaut à, eh bien, nous utilisons beaucoup de temps. De même, nous n'avons pas non plus d' équivalent pour filtrer. Il extrait les lignes dont la valeur sur cette colonne indiquée ne correspond pas et correspond à la valeur spécifiée. Donc, ici, nous pouvons demander, supposons qu'il s'agisse d'une syntaxe provenant des utilisateurs point et E, q n'étant pas égal à, disons ici, nom, et non égal à. C'est vraiment une aide. Donc, à part cette ligne en particulier, il récupérera tout. Parfois, vous pouvez en avoir besoin, cela dépend de votre application. Alors nous en avons une excellente là-bas. Ensuite, le filtre récupérera toutes les lignes dont la valeur sur cette colonne spécifiée est supérieure à la valeur spécifiée. Supposons donc que vous vouliez tous les utilisateurs âgés de plus de 18 ans. La syntaxe est donc la suivante. De la part des utilisateurs. Sélectionnez les options ci-dessus. Je pense que j'ai oublié de sélectionner la déclaration ici. Sélectionnez. Et celui-ci. Nous ne sélectionnons pas GT supérieur au nom de la colonne Allons-nous vieillir ? La valeur est 18, donc la valeur de ces lignes ne serait pas entrée dans 18. Et les autres champs supérieurs à sont égaux. Pour toutes les lignes dont la valeur dans cette colonne de date de séjour est supérieure ou égale aux valeurs spécifiées. Donc, par exemple à partir de users select.gt. Supposons qu'il y ait une colonne d' abonnés et amène ou obtienne simplement les utilisateurs dont le nombre d'abonnés est supérieur à 10 000, impair et supérieur ou égal à 10 000 décès. De même, nous avons moins de, c' est-à-dire que le LTE est inférieur ou égal à ? Je vais juste glisser ici. Inférieur à, car ce d n est inférieur à égal. De la même manière que le LTE. Vous pouvez simplement le comprendre avec le même exemple. Alors quelques autres. C'est-à-dire que la colonne correspond à un modèle. Donc, ici, récupérez toutes les lignes dont la valeur colonne sous-estimée correspond à celle fournie à tour de rôle. Et n'oubliez pas que c'est sensible aux majuscules et minuscules. Donc, cette affaire envoie Dave, nous l'écrirons comme des super moyens pour les utilisateurs de sélectionner. Comme ici. Nous allons écrire la colonne des noms et quel est ce modèle ? Opposez-vous. Il devrait y avoir un lac, le bord et le sous-marin. Je portais ce nom. Le rocher portera ce nom. J'espère que vous avez compris avec cet exemple. De même, nous avons une colonne qui correspond à une majuscule, une colonne qui ne fait pas la distinction majuscules/minuscules. Si modèle. Ici, il sera agréable de se séparer. Les utilisateurs sélectionnent. Moi, comme ici, c'est insensible. Si vous l'avez écrit en minuscules, cela apportera également la même chose. exemple, si vous venez de dire THE en bas, ce n'est pas une majuscule, alors cela fera également apparaître cette ligne. Comme ça. Il y en a d'autres, mais je vais vous dire la dernière. Cette colonne se trouve dans l'ADA, se trouve dans le tableau. Il extrait donc toutes les lignes dont la valeur dans cette colonne se trouve soit dans la liste de valeurs spécifiée. C'est comme si super pouvait commencer par les utilisateurs, sélectionner puis NE PAS ENTRER. Et soulignez. Ensuite, le statut se trouve soit en dessous. Donc, que cette valeur soit hors ligne, en ligne ou hors ligne, il même en ligne ou hors ligne. Si l'une de ces valeurs est présente, apportez-la. De même, il existe quelques autres sous-éléments, tels que les colonnes contiennent, chaque élément contenu par le filtre de valeur répond à au moins une condition. Tu l'as fait. Ces choses-là. Tu sais lire. Vous pouvez en savoir plus sur les autres dans la documentation officielle. heure actuelle, nous nous concentrerons davantage sur l'égalité de deux. Et puis nous avons les modificateurs. Il y a du travail au niveau des lignes. Ils nous permettent de renvoyer des lignes qui répondent certaines conditions sans modifier la forme des lignes. modificateurs sont tout ce qui ne correspond pas à cette définition, ce qui nous permet de modifier le format de cette réponse. C'est-à-dire des limites ascendantes et descendantes et tout ce genre de choses. N'oubliez pas que les modificateurs doivent être spécifiés après le filtre. C'est-à-dire s'il y a un filtre après ce modificateur de points. Et voyons, comprenons le modificateur. Ici. Cela change simplement l'ordre des réponses. Ce sont de super moyens, pas de la part des utilisateurs. Sélectionnez. Ici, nous ajouterons colonne de numéro de commande à point lors de l'envoi. L'envoi ne doit pas être faux. Donc, par défaut, l' ordre croissant est vrai. Nous pouvons le rendre faux. Et puis cela viendra dans l'ordre décroissant. Et puis nous avons limité ce modificateur de requête. Cela limite la quantité de données provenant. Les utilisateurs. Sélectionnez une limite. Apportez donc de nouvelles données, ou supposez que vous souhaitiez y mettre fin sous la forme d'une analyse comme celle-ci. C'est bien comme ça. Vous pouvez comprendre que c' en est un peu plus. Récupérez la requête sous la forme d'une seule ligne, mais ce n'est pas nécessairement le cas, ces deux sont nécessaires pour le moment. Il est donc temps d'appliquer ce que nous avons appris maintenant, à savoir environ trois douzaines de modificateurs. Plus tôt dans notre application, nous avons récupéré tous les doublages, mais maintenant, à l'aide d'un filtre, nous allons récupérer uniquement les données téléchargées par un utilisateur en particulier qui sont authentifiées. De plus, nous modifierons l'ordre et afficherons le dernier dessin en haut. Alors d'abord, écrivons maître. Et encore un. Essayons de comprendre où vous vous demandez pourquoi il ne s'affiche pas car pour le moment, nous devons l'actualiser car ce n'est pas en temps réel. Vous voyez, maintenant, après le redémarrage, il nous montre les trois données. Maintenant, nous voici dans le futur. Ici, dans la fonction future, simplement après les points, sélectionnez le point droit égal. Le nom de la colonne est l'ID utilisateur. Et le nom d'utilisateur doit être identique à celui à des autoroutes. L'identifiant utilisateur actuel, comme celui-ci, et la commande doivent être des identifiants. L'ordre croissant est égal à faux. Maintenant, si je le sauvegarde, il a changé. Maintenant. Nous avons toutes les données les plus récentes en haut. J'espère que vous avez beaucoup appris aujourd'hui. Dans la vidéo suivante, nous travaillerons sur la fonctionnalité en temps réel de la file d'attente. 15. Implémenter une base de données en temps réel: Bonjour. Nous sommes maintenant en mesure d'ajouter des données, mais l'utilisateur doit redémarrer son écran pour refléter les modifications. Ce n'est pas une bonne expérience. Nous allons donc apprendre à utiliser les streams plutôt que les futures afin d'afficher les mises à jour en temps réel. Alors, qu'est-ce que la syntaxe d'abord, nous allons vous montrer une syntaxe qui est une base de données en temps réel. Soit vous pouvez utiliser directement ce qu'ils supervisent. À partir de là, nous appellerons utilisateur, supposons ensuite stream, stream. Et n'oubliez pas que le flux prend une liste de colonnes clés primaires comme argument. Il faut donc un E primaire, et il suffit d'écrire ID. OK, ici. Alors écoute. Et dans cette écoute, trouverez une liste de données et vous pourrez faire ce que vous voulez avec ces données. Fais quelque chose, d'accord, ici, à l'intérieur de toi, tu peux faire quelque chose. Mais que faire si vous souhaitez écouter en utilisant Stream Builder ? Ainsi, en utilisant le générateur de flux, vous pouvez ensuite l' attribuer directement ici, comme ceci. Supposons qu'un flux existe. Découpons-le. L'argument est là. Et ici, vous pouvez simplement écrire des autoroutes que les utilisateurs diffusent. C'est ici, comme d'habitude, clé primaire. Dans ce cas, le capital. C'est juste que je ne veux pas m' embêter. C'est la syntaxe. Nous utiliserons cette syntaxe car nous utilisons StringBuilder. Si vous souhaitez également écouter directement la supposition dans l'état init, vous pouvez implémenter la ligne to15 ci-dessus. La première chose à faire est sans aucun doute que nous pouvons écrire directement ici. Mais je vais juste le rendre complètement rigide. Et ici, je vais écrire un flux variable et un lead car je vais attribuer leur valeur à chaque état. Et il contient cette liste de valeurs dynamiques. Et nous allons simplement écrire un flux de lecture comme celui-ci. Et puis dans l'état d'initialisation, je vais faire en sorte que le flux de lecture soit égal à Supervision Dot Forum. Pour perdre le stream. Voir la clé primaire dedans demandant, je vais écrire l'identifiant. Ensuite, la colonne à points égaux correspond à l'ID utilisateur. Et la valeur sera un identifiant utilisateur supervisé ou non actuel. Et de même, nous avons une colonne de filtre modificateur. Allons-nous identifier l'ordre croissant faux ? C'est ça. Nous avons cette chaîne. Et maintenant, nous allons simplement le changer en trois millimètres. Ce sera un flux et ce sera un flux lu. Comme ça. C'est ça. Redémarrez simplement. Maintenant, vérifions si cela fonctionne ou non. Maintenant, si phi sine n, masse droite, que reste-t-il ? OK, j'ai eu un problème avec les clés physiques. Ce n'est pas une erreur, c'est juste un mot clé non plus. Rien d'autre. Nous allons simplement procéder comme ceci et cliquer sur Créer. Vous voyez, huit a été mis à jour automatiquement puisque nous utilisions des flux plus tôt, nous avons dû actualiser ou redémarrer l'application. De toute évidence, c'est plus convivial. Et la plupart des applications nécessiteront des applications messagerie Stream Slag ou quoi que ce soit d'autre, des notifications et tout le reste. Eh bien, j'espère que vous avez apprécié découvrir la base de données en temps réel. Dans la vidéo suivante, nous travaillerons à la mise à jour et à la suppression de nos données. Merci. 16. Mettre à jour et supprimer les fonctionnalités: Il est maintenant temps d'apprendre à mettre à jour des données existantes. Le superviseur nous fournit, à jour mon tour et doit toujours être associé à des filtres. Passons à la page d'édition. Ici. Découvrons la fonctionnalité de mise à jour. Donc, la syntaxe est la suivante : soit vous pouvez commencer tout de suite par le nom du premier jour. Supposons que les utilisateurs datent. Maintenant, envoyez ces données. Vous souhaitez le mettre à jour sous la forme d'une carte. La valeur clé, c'est le nom. Je veux que ça change pour Elon Musk. Ensuite, vous devez écrire ce match, car nous ajouterons ici la condition des données à mettre à jour. Donc id doit être égal à dix. Mettez donc à jour les données. C'est l'identifiant de qui ? Étrange ? Vous avez une autre syntaxe. Pour mettre à jour. Vous pouvez utiliser n'importe laquelle de ces deux mises à jour utilisateur. C'est donc le même nom, mis à jour en Elan Musk. Mais au lieu de correspondre, nous utiliserons égal. C'est ça. Et ici, ce sera comme une pièce d'identité, plus calme qu' autrement sous forme de carte. N'oubliez pas qu' il s'agit d'une différence entre les deux syntaxes. Donc, comme vous le souhaitez, utilisez ce D, car vous risquez d'être confus plus tard si vous voyez du code d'application et vous penserez : « D'accord, nous n'avons appris que ce mot clé, comment il est utilisé ». C'est pourquoi. Il vous suffit maintenant de l' implémenter dans notre application. Ici. Tout d'abord, ayez une fonction client superviseur . À l'échelle du futur, ce n'est pas le cas. Il ne retourne rien. La synchronisation des données. Ici, j'écrirai si le texte du point du contrôleur de titre est égal à null, alors s'il n'est pas égal à null, alors n'effectuez que cet état défini. Le chargement est-il égal à vrai ? Attraper. Dans ce sec, tout de suite. Ce n'est probablement pas par ruse. Pas de mise à jour. La valeur est del, mettez à jour la valeur du titre. Contrôleur Del, point, texte et correspondance. Ce que nous devons égaler. Identifiant. L'identifiant est un identifiant à points rigides comme celui-ci. Et une fois que c'est fait, utilisez simplement Navigator, pas pop. On va juste ne rien y faire exploser. Comme nous utilisons des flux, il sera certainement mis à jour en temps réel. Ici. Si quelque chose ne va pas, a est égal à faux. Et un échafaudage de contextes, de points, snack-bar, écrira que quelque chose s'est mal passé. Et nous allons vérifier si c' est bien ce qu'est l'en-tête. Ok, enregistre-le. Et j'utiliserai également la fonction de destruction. Ils éliminent les points de contrôle. C'est une bonne pratique que le soja ou moins ne soit pas obligatoire pour ce projet fictif. Mais nous aimerions toujours faire de notre mieux. Maintenant, dans cette mise à jour, il suffit d' attribuer le moteur, c'est-à-dire celui-ci, sur site, et de l'enregistrer. Nous allons tester l'application. Si je passe à la troisième, c'est Master Flatter. Et ils rassemblent Flutter et ça et cliquent sur Mettre à jour. Tu vois, rien ne s'est passé. Voyons s'il y a une erreur. L'ampoule est Dot Todos Dot Update. Je pense qu'il aurait dû être mis à jour. Eid Early Title Controller Dot Decks Match. Voyons nos données. OK. Nous avons Maître Florida et Dart ici. Mais pourquoi n'a-t-il pas été mis à jour en temps réel ? Si je le rafraîchis, il est là mais cela ne devrait pas être le cas. La fonction de mise à jour fonctionne. Essayons-le à nouveau. Mise à jour. Dis d'accord, maintenant ça marche. Je n'ai pas eu un tout petit problème par erreur, modifié la programmation de Master Flirt et je l'ai mise à jour. Il fonctionne parfaitement. Nous avons également compris la fonction de mise à jour. Maintenant, la seule chose à apprendre est de savoir comment supprimer des données de Superbus. Superbus nous offre également la fin de ma troisième place. C'est très simple, comme la méthode de mise à jour, et doit être combinée avec des filtres. Et nous pouvons utiliser match ou égal. Donc, ce que je veux dire, c'est supposons que nous ayons cette fonctionnalité différée. La syntaxe est simple. Des super moyens de la part des utilisateurs, pas de retard. Ensuite, assurez-vous d' avoir ce match ou un équivalent. Bien que j'aie cette correspondance ici, id est égal à dix, comme ça. Implémentons une fonctionnalité de suppression. Je vais simplement le copier, le mettre à jour et le coller. Je vais écrire supprimer. Je n'ai pas besoin de cette déclaration. Disons que le chargement doit être vrai. Ici. Attends, ça ne devrait pas être le cas. Supprimer. C'est un Superbus lourd de Todos Dot Delayed. Et nous avons directement ce numéro de match. Et nous aurons, après cela, nous éclaterons. Ou si vous avez une erreur liée aux champignons, ils l'affichent peut-être dans le snack-bar et l'attribuent simplement dans le bouton surélevé. Des données quotidiennes comme celles-ci, puis enregistrez-les. Testons cela également. Je vais supprimer le premier, Mastermind Stack. Il est en train d'être supprimé. Si nous consultons les données de notre base de données, pour les données, si je les actualise, il y en aura trois. Nous avons donc réussi à comprendre comment créer, lire, mettre à jour et supprimer des données. J'espère que vous avez aimé apprendre jusqu'à présent. Dans la vidéo suivante, nous allons apprendre quelque chose de nouveau. Ils prêtent un entraînement. 17. Activer la sécurité des niveaux de rangée: Bonjour, bon retour. Aujourd'hui, nous allons découvrir un nouveau concept qui est la sécurité au niveau des lignes, également connue sous le nom de RLS. Rls est une fonctionnalité de sécurité qui nous permet de contrôler l'accès aux lignes d'une table de base de données en fonction de l' identité ou du rôle d'un utilisateur. Dans Superbus, nous pouvons utiliser RLS pour restreindre les lignes de données visibles par un utilisateur qui sont modifiées en fonction de règles prédéfinies. Jusqu'à présent, toute personne disposant de la clé API publique avait accès à notre base de données. N'oubliez pas non plus que le comportement par défaut après l'activation de la table bidirectionnelle RLS est que, après avoir dîné, elle refuse tout accès l'utilisateur soit authentifié ou non. Jusqu'à ce que nous parlions de nos politiques. Chaque politique est attachée à une table et sa stratégie est exécutée. Chaque fois que vous accédez à une table, vous pouvez simplement les considérer comme l' ajout d'une clause where à chaque requête. La table peut avoir différentes politiques IRLS. Peut-être que vous voulez qu'une table soit produite, d'autres peut-être pas. C'est donc à vous de décider à quelle table vous souhaitez donner accès. Cela suffit donc pour le Curie. Activers-le. Accédez au tableau de bord de Superbus, accédez à notre action. Ensuite, vous pouvez consulter les politiques ici. Ensuite, il est mentionné que le RLS est désactivé. Il suffit donc de cliquer sur Activer RLS. Oh, d'accord. Alors maintenant, si nous redémarrons notre application, nous constaterons qu' aucune donnée ne s'affiche. Voyons voir, aucune donnée n'est disponible. Nous devons rédiger des politiques. Et les politiques nous permettent essentiellement de spécifier qui a accès à quelles données et quelles actions peuvent être effectuées sur ces données. Nous devons rédiger des politiques pour toutes les opérations de base. C'est-à-dire créer, lire, mettre à jour, supprimer. Et c'est très simple. Cliquez sur la nouvelle politique dans ce tableau de tâches. Après cela, vous aurez deux options. Nous allons choisir l'option Commencer rapidement pour le moment. Pour une option plus avancée, vous pourrez également la voir plus tard. Il vous suffit de cliquer ici. Alors. Cela nous donne des politiques. Mais tout d'abord, je voudrais vous dire quelles politiques je souhaite avoir pour cette application. C'est-à-dire pour notre application Todos. De plus, les utilisateurs ne doivent accéder ou lire que leurs propres données. Cela signifie que la colonne ID utilisateur dans la super base doit être égale à l'idée de la personne qui envoie la demande. C'est la première chose à faire. Deuxièmement, tous les utilisateurs doivent être en mesure de créer des données s' ils sont authentifiés. Ainsi, quand il s'agit d'insérer, d' insérer, tout le monde est autorisé. Juste ce jour-là, ils doivent être authentifiés. Et maintenant, pour mettre à jour ou supprimer, les utilisateurs devraient pouvoir mettre à jour ou supprimer leurs propres données sur lead, c' est-à-dire comme ça. Lisez la politique. La colonne ID utilisateur doit être égale à l'idée de la personne qui envoie la demande. C'est ça Maintenant, encore une fois, revenons à ce modèle. Cela nous donne quatre options. Tout d'abord, il lira l'accès à tout le monde, puis activera l'accès par insertion pour les utilisateurs authentifiés sur. Aujourd'hui, les utilisateurs peuvent accéder à un bit en fonction de leur e-mail et de leurs années 40. Et il a créé un accès de suppression pour les utilisateurs en fonction de leur identifiant utilisateur. Nous l'utiliserons, c' est-à-dire un accès basé sur l'utilisateur. J'ai créé ce modèle nous l'utiliserons et le modifierons pour notre commodité, utilisez simplement ce modèle. Maintenant. Il nous demande des choses. Le premier est le nom de la politique. Je vais simplement écrire « activer et lire l'accès » pour les utilisateurs en fonction de leur identifiant. Alors. Opération autorisée, je vais sélectionner celle-ci. Et n'oubliez pas que vous pouvez faire deux choses, mais que vous ne pouvez pas faire deux choses. C'est ici, une seule à la fois. Ensuite, la cible augmente, il suffit de la laisser par défaut à tous, car l'utilisateur doit évidemment être authentifié. Maintenant, en utilisant l'expression. Chacun devrait, nous devrions avoir un identifiant égal à l'identifiant de l'utilisateur, d'accord ? Cet ID utilisateur est donc le nom de cette colonne, et l'identifiant r point signifie la personne qui envoie la demande. Maintenant, si j'essaie de cliquer sur Enregistrer, cela montre qu'un adder n'a pas réussi à créer de fonction. L'identifiant étrange n'existe pas. Cela ne devrait pas être comme ça. Et il y a également eu une autre erreur. Mais attendez, je vais le refaire. Voir ici s'il en va de même si j'écris, lis l'accès. Et si je venais de sélectionner ceci. Maintenant, si j'écris, je passe en revue, politique sûre et que je vois maintenant pour créer un opérateur n'existe pas. Vous, les UUID, passez à Tech puisque, puisque nous avons mentionné l'identifiant utilisateur, cette valeur en tant que texte est supervisé, souvenez-vous que sa valeur est du texte. Donc, soit vous pouvez modifier cet entier de type deux de colonne, soit effectuer cette modification juste pour vous assurer que cela fonctionnera comme suit. Maintenant, si je clique sur Réviser et enregistrer politique, la politique a été enregistrée avec succès. Activez donc l'accès en lecture pour les utilisateurs en fonction de l'identifiant utilisateur. Voyons si notre application fonctionne ou non. Nous pouvons désormais accéder à nos propres données. Nous l'avons fait avec succès. Ils ont tendance à lire la politique d'accès à notre table de base de données. Dans la vidéo suivante, nous allons simplement écrire la politique d'insertion, de mise à jour et de suppression. Et Q. 18. Rédaction de politiques de CRUD: Bonjour. Nous devons maintenant mentionner cette politique d'insertion. Et pour cela, nous allons à nouveau cliquer sur nouvelle politique. Alors lancez-vous rapidement. Et ici, nous allons choisir le modèle, puis nous allons insérer un accès permettant aux utilisateurs authentifiés d'utiliser uniquement cette table. Ici. Nous n'avons rien d'autre à faire. Cliquez ensuite sur Révision et sécurité de la politique. Cela dit, nous avons lu, nous avons inséré. Maintenant ou mettez à jour. Nous utiliserons à nouveau l'accès en fonction de l'identifiant utilisateur, c' est-à-dire ce modèle et cette date pour les utilisateurs. Et ici, je vais cliquer sur mettre à jour. Cela nous donne un autre champ qui est, qui sera le même. Et encore une fois, comme je l'ai dit, comme c'est une chaîne, je dois la convertir en UUID, la copier et la coller ici. C'est ça. Cela signifie simplement toute mise à jour sur les utilisateurs en fonction de leur nom d'utilisateur. Révision, politique sûre. D'accord. Passons maintenant à la dernière, savoir la nouvelle politique, hebdomadaire ou différée. Maintenant, c'est comme activer l'accès pour les utilisateurs en fonction de leur identifiant. Utilisez ce modèle. Tout va bien. Tout simplement celui-ci. N'oubliez pas que vous n'avez pas à écrire cet UUID si vous avez mentionné la colonne, c' est-à-dire les noms de ligne ou la colonne sous forme d'entier et non de chaîne dans la base de données. C'est ça. Retardé K. Cliquez sur Réviser et sécuriser la politique. Nous avons donc toutes les politiques quand Chen, n'est-ce pas ? Alors maintenant, notre application fonctionnera parfaitement. La sécurité au niveau des lignes est une chose très fondamentale, mais très, très importante. J'espère que vous avez compris que lorsque nous créons des applications réelles, ce sont toutes les fonctionnalités nécessaires. La sécurité est ce dont nous aurons besoin dans notre application. Alors c'est ça. Pour ce concept. Dans la prochaine vidéo, nous allons commencer à travailler sur. Donc, stockage basé sur l'alimentation, file d'attente. 19. Configuration de stockage: Bonjour, bon retour. Nous avons donc découvert les bases de données d'authentification et la sécurité au niveau des lignes. Enfin, il est temps de comprendre comment utiliser le stockage dans Supervision. Dans le monde d'aujourd'hui, le contenu est roi. Ensuite, vous regardez les applications de réseaux sociaux ou le commerce électronique partout où vous trouverez ces images et vidéos. C'est donc le moment. Nous apprenons également à télécharger des fichiers vers notre espace de stockage. La première chose à faire est de créer un nouveau compartiment. Ici, vous pouvez voir que le bucket est un conteneur dans lequel les fichiers sont stockés. Chaque compartiment est associé à une URL unique, qui peut être utilisée pour accéder aux fichiers qu'il contient. Chaque compartiment peut disposer de son propre ensemble d'autorisations, ce qui vous permet de contrôler qui peut y lire et y écrire. Tout comme RLS. Lorsque vous chargez un fichier dans un compartiment, lui est automatiquement attribuée une URL unique lui est automatiquement attribuée, qui peut être utilisée pour accéder au fichier à tout moment. Cliquez donc simplement sur Créer un nom de compartiment. Je vais simplement écrire des images d'utilisateurs. Rendez-le public afin que nous puissions y accéder plus tard. Nous parlerons également des valeurs mobilières, afin qu' il n'y ait pas autant de problèmes. Nous avons donc maintenant ces images d'utilisateurs. Ce que nous avons également pour écrire des politiques, tout comme nous l'avons appris dans le sexe des bases de données et tout comme nous l'avons appris dans le sexe des bases de données et à propos des politiques ou des compartiments, nous pouvons configurer des autorisations qui contrôlent qui peut y lire et y écrire. Par exemple, vous pouvez configurer un compartiment accessible uniquement aux utilisateurs authentifiés ou ouvert au public. En outre, vous pouvez définir politiques de violation qui suppriment automatiquement les fichiers après un certain temps. Maintenant, cliquez sur Nouvelle politique. Il vous suffira de cliquer sur nouvelle politique. Ensuite, nous utiliserons la fonction de démarrage rapide. Et cela nous donne cinq options. Autorisez l'accès aux images JPEG dans un dossier public. Vous donne accès uniquement à leur propre nom de dossier de premier niveau. En tant qu'UID. Donnez aux utilisateurs l'accès à un dossier sur lead à des utilisateurs authentifiés. Accordez l'accès à un dossier imbriqué appelé admin uniquement à un utilisateur spécifique. Donnez accès à f phi à un utilisateur. Nous utiliserons donner aux utilisateurs l'accès uniquement au leur. C'est le nom du dossier de niveau supérieur, cet UUID, c'est un UID. Utilisez ce modèle ici. Tout d'abord, sélectionnez tout. Ici. Je suis désolée. Je fais une erreur vraiment stupide encore et encore. Mais , en termes ensuite, en termes de salaires et d'impôts, les a fait dans le cadre d'une politique réellement sûre. Cela signifie donc qu' un dossier sera créé dans ce compartiment. C'est-à-dire que chaque utilisateur aura son propre dossier. Vous le comprendrez lorsque nous commencerons à télécharger des images. Maintenant, nous devons également installer un package. Accédez à pub.gov et écrivez le sélecteur de fichiers. Je choisis celui-ci. Il vous suffit de copier une dépendance. Accédez au fichier YAML Pub spec point. En dessous du point liquide ENV. Il suffit de coller et d'enregistrer. Cela prend un peu de temps. Mais nous allons le garder. C'est fait. Si nécessaire, vous pouvez redémarrer notre arrêt et exécuter votre application, mais je ne pense pas que ce soit obligatoire. Et pour Android, il n' y a pas de configuration. Mais si vous utilisez un appareil iOS, vous pouvez simplement consulter la documentation ici pour le configurer. Mais pour notre appareil, cette chose est acquise. Alors c'est tout. Dans la vidéo suivante, nous allons commencer à travailler sur la fonctionnalité de téléchargement. 20. Implémenter la fonctionnalité de chargement: Bonjour, Commençons par l' écran de téléchargement. Créez un nouveau fichier dans les pages et nommez-le. Téléverser. Point de page, point. Commencez à travailler sur l'UA. Importation de matières premières, autoroutes, Floride. À bord. Créez maintenant cette vision complète de l'État. On pourrait juste le nommer téléchargement, âge. Et maintenant, du veau comme armes, Superbus, du rangement. Puis un corps. Pour l'instant, il suffit de le laisser dans le contenant. Puis bouton d'action flottant. Bouton d'action flottant. Ce bouton sera utilisé pour ajouter une icône photo. Je peux commencer et appuyer sur un péage, laisse-le pour le moment. Et puis tout en haut, cela crée un état de chargement. déchargement est égal à faux. Maintenant, allez au point d'accueil dans la barre AB. Créez un nouveau bouton pour télécharger des images. Ici. J'aurai un nouveau bouton car je peux le faire sur place. Et je peux télécharger un fichier. Et ça devrait disparaître, comme toujours. Et sur site, il suffit de naviguer, de naviguer dans leur Bush. Matérialisez-le. Et page de téléchargement. C'est ça Sauvegardons-le. Et consultez notre application. Cela permet toujours d'économiser. D'accord, nous avons cette icône. Si je clique dessus, vous voyez, c'est la page de stockage. Il est maintenant temps de travailler sur la fonctionnalité de téléchargement d'images. Supervise nous donne une fonction de téléchargement qui accepte deux arguments, à savoir ce nom de fichier. Nous pouvons également l' imbriquer et mentionner la structure pliée dans laquelle nous voulons stocker dans Superbus dans cet argument. deuxième argument est le fichier que nous voulons télécharger. Allons-y, passons à la page de téléchargement. Oui, la première chose à bord, pas IO. Créez ensuite une instance Superbus, instance client, comme ceci. Créez ensuite une fonction. Futur. Télécharger la synchronisation des fichiers. Maintenant, pour publier, nous allons utiliser la bibliothèque de sélection de fichiers. File est égal à wait. Par une grande plateforme. Les fichiers Not Pick autorisent chutes multiples et ils seront des images à points. Nous utiliserons l' onglet Fichier sous forme d'image pour le moment, évidemment de la même manière que vous pouvez télécharger n'importe quel fichier. Maintenant, nous allons écrire une instruction if pour vérifier si l'utilisateur a choisi un fichier ou non. Si le fichier n'est pas nul, seul l'état de téléchargement est vrai. Alors, faisons un essai de blocage. Dans ce bus. C'est plus lourd. Le fichier fichier est égal à, nous devons le convertir en objet de fichier, le fichier point étant le premier chemin point. Et ce ne serait pas nul puisque nous avons le contrôle if. se peut que vous demandiez le blanc en premier, car cela nous donne la liste des fichiers et nous savons que nous n'en avons pas autorisé plusieurs, alors choisissez simplement le premier fichier, et c'est tout. Le nom de la chaîne est alors égal à un gros fichier, à des fichiers à points. Prénom Dot. Ensuite, chargez une chaîne. URN téléchargée équivaut à attendre. Voici maintenant la syntaxe des super voies de stockage. images des utilisateurs ne proviennent pas du nom de notre compartiment. Alors, à qui appartient la fonction de téléchargement ? Et il s'agit d'une question sur la batte de profondeur. N'oubliez donc pas que nous devons créer un dossier portant le nom de cet identifiant utilisateur. J'espère que vous vous souvenez que nous sommes dans les politiques que nous avons rédigées ainsi. Le superviseur n'est pas un artiste, ce n'est pas un nom d'utilisateur actuel. Ensuite, ajoutez une barre oblique, puis un nom de fichier. Comme ça. Et c'est un dossier déjà pris. Maintenant, si vous le souhaitez, vous pouvez simplement imprimer l'URL téléchargée. Et puis je suis juste en train définir l'état, c'est que le chargement est égal à faux, n' est pas le chargement, c'est le téléchargement. Vous transférez Isabelle sur false. Et échafaudez le snack-bar Messenger of Contexts que j'ai téléchargé avec succès. Sexes au complet. Couleur de fond, la couleur est vert foncé. Et faites-en une constante. Et dans ce hic, il suffit de dire « imprimer ». Pour l'instant, c'est du débuggage. Et nous imprimerons une annonce. L'état défini est le téléchargement de fichiers. Il télécharge une comédie musicale sur false. Et de même, dans Scaffold, quelque chose s'est mal passé. C'est ça Maintenant, K Oui. C'est aussi une application de bureau. D'accord. Je ne l'ai pas attribué. Passons au téléchargement. Le nom de notre fonction est uploader un fichier. Dis-le ici. Maintenant, si je clique sur le bouton, je me demande simplement ce qui est ajouté ici ? Maintenant, mes données sont là, mais aussi dans le bouton flottant. F à faire si le téléchargement est vrai. Et contre cet objectif. Indicateur de progrès. Enregistrez tout, réessayez de voir quelle est l'exception ajoutée en raison l'absence de plug-in hockey, arrêtons notre application et redémarrez-la. J'ai donc déjà commencé ma candidature. Testons-le à nouveau. Cliquez sur le bouton. Maintenant que sa base d'approvisionnement est en demande, nous ne pouvons l'autoriser qu'une seule fois. Utilisez ensuite cette image et enregistrez le fichier téléchargé avec succès. Passons maintenant au tableau de bord de notre superviseur. Ici. Si je le recharge, vous verrez que nous avons cette image d'utilisateur. Et nous avons cette image ici. Et voici le nom de l'identifiant utilisateur. C'est-à-dire qu'il s'agit d'un dossier contenant l'ID utilisateur. J'espère donc que vous avez compris comment nous pouvons télécharger des images. Il suffit de mettre la vidéo en pause et comprendre notre tentative de comprendre le code. Il s'agit simplement d'une chose fondamentale. La première, depuis ce téléchargement du fichier EXE, datatype debt, pourquoi nous l'avons converti en fichier. Ensuite, nous avons le nom du fichier, et c'est tout. Dans la vidéo suivante, nous corrigerons les images téléchargées et Q. 21. Fetch des images chargées: Bonjour. Il est maintenant temps de récupérer les images téléchargées dans Firebase. Nous pouvons utiliser la méthode de liste de la fonction storage point bucket pour sélectionner tous les fichiers de ce dossier à partir de lui. La méthode Bucket List renvoie une liste de fichiers contenus dans le compartiment, que vous pouvez ensuite parcourir pour accéder aux fichiers individuels. Donc, juste pour émuler la syntaxe, syntaxe pour récupérer des images. C'est aussi simple que ça. Objet de fichier de la liste finale. Résultats. Supposons ici un poids. Donc, le rangement des points de Bobby. À partir de là, à partir d'images , c' est-à-dire le nom du bucket, la liste de points. D'accord ? Vous pouvez simplement indiquer le nom du bucket ici. Nom du compartiment. N'oubliez donc pas que nous pouvons mentionner le nom du dossier dans cette liste en passant un argument appelé Math. Ainsi, comme dans notre exemple, nous créons des dossiers par identifiant utilisateur. Nous allons donc l'utiliser. Faisons nuit et écrivons la fonction def. Créez une nouvelle fonction. Mon nom, découvrez mes trouvailles. Liste finale. Objet de fichier. Le résultat est égal à attendre Superbus. Rien de superbement. Rien H. Rien de l'image de l'utilisateur n'est une liste noire. D'accord ? C'est donc l'air, mais vous devez évidemment mentionner le nom de ce dossier. Il s'agira de l' identifiant utilisateur actuel en super res point . Ce nom de dossier. Grotte. Maintenant, n'oubliez pas que ce résultat ne renvoie pas l'URL de l'image. Donc, ici, ce que je veux dire par là, c'est attendre. Liste, même si je vais simplement écrire un élément de barre dans le résultat, imprimer un élément. OK, essayons de le faire. Voyons voir, déplacez tout depuis la console. Si je clique, je n'ai évidemment pas appelé la fonction. Je ne pense pas. Nous avons l'état initial ici. OK, définissons un objectif factice. Passons à l'état d'initialisation. Récupère mes fichiers. Maintenant, si je vais sur la page, nous avons une instance de l' objet de fichier C. C'est ce que cela nous donne. ID du compartiment, compartiments gérés, métadonnées, nom similaire à celui-ci. Mais cela ne nous donne pas l'URL de l'image . Vous obtiendrez donc le nom, désolé, identifiant et le nom, ainsi que les métadonnées. Donc, si je redémarrais. Ensuite, vous verrez la taille de l'ETag, le contrôle du cache. Tout est l'annonce plutôt que l'URL de l'image. Maintenant, pour cela, la supervision nous donne une autre fonction qui consiste à obtenir l'URL publique. Je vais te montrer comment faire. Je vais d'abord créer une variable vide, qui sera une liste de chaînes. Mes images sont comme celles-ci. Cela peut alors changer. En conséquence. Nous avons maintenant, vous obtiendrez une URL égale à. Maintenant, voici. À partir de là, notre superviseur ne vient pas , pas de l'utilisateur. Des images. Dot get. Voyons ce qui se passe. OK, j'ai oublié ce rangement. Quelle stupide erreur. Les images des utilisateurs Dot reçoivent une URL publique. Voir. Maintenant, il nous demande la partie de cette barre d'image dont nous avons besoin. Tout d'abord, le dossier qui est si omniprésent, point, point, identifiant utilisateur actuel. Et aussi, si vous le souhaitez, vous pouvez utiliser une gestion d'état, comme Provider, et obtenir cette idée et tout y stocker. instant, je le fais d'une manière très simple. Et n'oubliez pas que nous obtenons le nom de l'image. C'est donc comme le nom d'un point d'image, comme celui-ci. À partir de là, nous obtiendrons l'URL qui peut être utilisée pour montrer l'innovation. D'accord ? Et voyons si c'est le futur ou non. Non, ce n'est pas le futur. Je peux donc simplement enlever ce poids. Et ici, je vais ajouter ces informations à celles ci-dessus chez EMTALA. Tout d'abord, je vais également enregistrer le nom afin qu'il puisse être utilisé plus tard pour supprimer, supprimer le but. Et l'URL va faire l'affaire et obtenir l'URL comme ceci. Enfin, je vais retourner mes images. Et aussi, si vous le souhaitez, imprimons d'abord si cela fonctionne ou non. Mes images sont variables. Et voyons voir, je vais juste revenir sur cette page. Et voir le nom de l'image est celui-ci, l'URL est celle-ci. Cela signifie donc que nous obtenons les informations. Il s'agit de cette URL publique. Il est maintenant temps de montrer que les images de cette interface utilisateur qui se trouve auparavant dans le corps n'étaient qu'un conteneur. Cela sera modifié. Écrivons maintenant Future Builder. Votre chaise. Nous avons cet avenir et récupérons mes fichiers. contexte, un instantané du lavabo. Instantané. Maintenant, si Snapshot Dot contient des données, faites autre chose. Le retour est un indicateur de progression circulaire. Indicateur. Si le snapshot contient des données , vérifions-le d' abord. Instantané. Données. La longueur du point est égale à zéro, c' est-à-dire qu'aucune image n'est téléchargée. Retournez ensuite les liens, le texte central, sans étiqueter l'image. Et si ce n'est pas le cas, revenez. Allons-y. Widget. Et n'oubliez pas que vous pouvez également utiliser le générateur, mais j'utilise un autre widget appelé séparé, sorte qu'entre tous les éléments, j'ai une séparation de, c' est-à-dire que je l'ai divisé en tant que séparateur. C'est l'un des widgets en désordre. Je présume que c'est là, mais je vais d'abord écrire. Separator apprendra. Il contient également des textes et un index. Nous allons simplement renvoyer un diviseur const comme celui-ci. De l'épaisseur à la couleur. La couleur est noir foncé. Comme ça. Ensuite , nous allons apprendre. Encore une fois, il en va de même pour l'index suivant. N. Je vais obtenir la carte des données, l'image les données instantanées et l'index des données. Je suis juste en train de stocker cette valeur cartographique ici à partir de cette liste une par une. Et renvoyez une ligne, ce qui signifie que les éléments excédentaires restent accessibles. Et le centre de Mendota et les enfants mangeront des puddings. Le premier est la taille de la boîte. Ici. Ce sera courant. La boîte, c'est, ce sera l'image. Je ne fais que lui donner de la hauteur. Il ne s'étend pas à tous les bâtons ou ne pose pas de problèmes plus tard. Réseau de points d'images. Maintenant, voici les données de l'image principale, l'URL, la boîte, la couverture à points. Et après cette boîte de cette taille, dans cette rangée, j' aurai un bouton en forme d'icône. Je peux être capable de supprimer confortablement les couleurs, rouge, 0, touche. Et je vais supprimer cet état d'initialisation pour le moment. J'espère que tout fonctionnera. C'est Jed. Jetons un coup d' œil à notre application. Je clique sur ce bouton et je vois que l'image apparaît dans notre application. Je vais juste ajouter un rembourrage à cette vue de liste. C'est ça. En ajoutant sera constant, les incrustations de bord symétriques par points. Ce qu'ils peuvent. Alors comme ça. Tu vois, c'est notre image. J'espère que tout va bien. Téléchargeons une autre image. Voyons voir. Je vais utiliser ce virus. voyez, nous avons aussi ce diviseur et nous avons deux images ici, qui sont superbes. Nous avons également effectué la partie de la récupération des images. Dans la vidéo suivante, nous travaillerons sur ce bouton de suppression. Et puis nous avons fait tout ce qui était nécessaire pour apprendre dans Superbus. Merci. 22. Supprimer la fonctionnalité d'image: Bonjour, bon retour. Travaillons maintenant sur la fonctionnalité de suppression du stockage. Sur les autoroutes. Nous avons DUS, supprimez ma technologie pour supprimer un fichier du compartiment. Il suffit donc d'écrire la syntaxe pour vous déplacer en fonction de son très basique objet de liste finale très basique. Il nous renvoie donc également ce fichier supprimé. Super ways, points, Storage, bucket, name, point, supprimez ceci, supprimez x et ajoutez un paramètre avec les noms de fichiers à l'intérieur de cette image, un point PNG, comme ceci. Et aussi, si nous le voulons, nous pouvons mentionner que le nom du dossier est également un cheveu. Dans notre cas, cela se fera avec un identifiant utilisateur. Créons-le. Ici. Je vais supprimer l'impression, elle sera annulée à l'avenir. Je ne veux pas renvoyer quoi que ce soit de large, supprimez l'image. Et il prendra un nom de chaîne, c' est-à-dire le nom de l'image. Tapons le try catch. Le catch block. Oui, c'est exact. Des super moyens. Points, point de stockage provenant des images de l'utilisateur. Supprimer. Oui. Tu dois en écrire une partie. Une partie sera composée de super a qui ne sont pas l'identifiant utilisateur actuel et le nom de l'image. Vous pouvez également utiliser l'interpolation de chaînes. Mais pour l'instant, voyons si cela fonctionne ou non. Ensuite, je vais simplement envoyer des données, rafraîchir la page pour que notre futur meure. Nous montre les dernières images. Et s'il y a une erreur, alors les contextes, snack-bar, écrivez simplement quelque chose, ont mal tourné. C'est ça. Nous devons utiliser cette fonction pour l' appeler ici dans le bouton icône. Comme l'ail, le nom de l' image, le nom de l'image, et ce sera un nom. Oui, nous lui avons donné un nom. Allons-y. Sauvegardons-la et sortons notre application. Nous y allons. Et si nous le faisions, supervisez, si je clique dessus, vois qu'il est également supprimé du stockage. Donc, si je le rafraîchis, voyons voir, je pense que ce sera le film, oui, le montage ne concerne qu'une seule image. Notre fonctionnalité de suppression fonctionne également parfaitement. En termes simples, nous avons cette application complète, suffit de la voir, de la tester. Enfin, si je le fais, je ne ferai que des projets. Maintenant, cliquez sur Créer. L'insertion fonctionne. Ensuite, nous avons le monde réel. Et si je le change en noir, c'est aussi évidemment faux, mais ça marche. Et puis supprimez-le également. Je l'ai supprimé. C'est la rud opérations que l'arène a également apprise sur la sécurité au niveau des lignes. Nous avons également procédé à une authentification. Et encore une fois, si je vais le télécharger. Comme vous pouvez le constater, le téléchargement fonctionne également parfaitement. Et je vais juste me déconnecter. Merci donc d'avoir été le Lee et j'espère vous voir également dans mes prochains cours. Alors d'ici là, continuez à travailler dur et à vous entraîner.