Développement d'applications de maîtres flutter pour les débutants absolus | Rahul Agarwal | Skillshare

Vitesse de lecture


1.0x


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

Développement d'applications de maîtres flutter pour les débutants absolus

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

      0:45

    • 2.

      Créer un nouveau projet et comprendre la structure de fichiers

      12:10

    • 3.

      Qu'est-ce que les widgets

      5:58

    • 4.

      Travailler avec le fichier Assets et Pubspec

      7:00

    • 5.

      Widget texte et échafaudage

      14:39

    • 6.

      Bouton d'action centrale et flottante

      8:38

    • 7.

      Changer de couleur et de style

      6:17

    • 8.

      Qu'est-ce que le Widget Stateless

      7:17

    • 9.

      Image de patrimoine et de réseau

      7:32

    • 10.

      Widget d'icônes et de boutons

      12:02

    • 11.

      Widget de conteneurs

      9:39

    • 12.

      Widget TextField

      6:50

    • 13.

      Colonne et rangée

      8:03

    • 14.

      ListTile et ListView

      8:59

    • 15.

      Qu'est-ce qu'un État

      6:33

    • 16.

      La méthode setState()

      6:38

    • 17.

      Widget d'État en action

      11:08

    • 18.

      Qu'est-ce que la fonction initState()

      6:30

    • 19.

      Comprendre le cycle de vie du widget

      7:41

    • 20.

      Concept de pile derrière la navigation

      4:49

    • 21.

      Méthode Push et Pop

      12:54

    • 22.

      Comprendre la route nommée

      12:38

    • 23.

      Passer des données via des constructeurs

      17:03

    • 24.

      Widget de navigation de tiroir

      10:53

    • 25.

      Barre de navigation en bas

      14:18

    • 26.

      Plonger en profondeur dans le Widget TextField

      5:38

    • 27.

      Ajout d'un contrôleur de rédaction de texte

      8:44

    • 28.

      Valider l'entrée utilisateur

      13:15

    • 29.

      Décoration et autres propriétés

      10:09

    • 30.

      Widget de dialogue d'alerte

      8:03

    • 31.

      Affichage de Snackbar

      6:10

    • 32.

      Comprendre les futurs

      17:05

    • 33.

      Concept d'attente Async

      8:19

    • 34.

      Qu'est-ce que des flux

      12:40

    • 35.

      Widget FutureBuilder et StreamBuilder

      12:12

  • --
  • 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.

303

apprenants

3

projets

À propos de ce cours

Si vous suivez le monde de la technologie, vous auriez peut-être entendu parler de Flutter et de sa popularité croissante jour après jour. Il existe beaucoup d'emplois autour de ce nouveau cadre, mais la fourniture de développeurs qualifiés est moindre. Donc son temps élevé pour améliorer notre compétence et saisir ces opportunités dès que possible. Vous apprendrez les bases jusqu'à l'avancée des concepts dans ce cours, ce qui suffit à vous aider à postuler pour votre travail de rêve.

Flutter est un kit de développement de logiciels gratuit et open-source utilisé pour développer des applications de plate-formes cross-plateforme haute performance avec une base de codes unique. Maintenant, nous aurons évidemment besoin d'une base de données à l'avenir. Le véritable avantage de choisir Flutter avec Firebase comme backend est qu'il vous offre un ensemble complet de gestion des applications. Du stockage en nuage à la base de données en temps réel en passant par l'hébergement de services d'authentification, Firebase fournira tout au même endroit et répondra en toute transparence aux besoins des startups.

Ce que vous allez apprendre dans ce cours ?

  • Flutter In dept Concepts

· Qu'est-ce que les widgets

· Widgets apatrides vs Widgets d'État

· Explorer divers Widgets

· Qu'est-ce qu'un État

· Comment gérer l'État

· Concepts de navigation

· Gestion de l'entrée d'utilisateur

· Programmation asynchrone

       

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 vous débutez dans le développement d' applications et cherchez un emploi pour gagner une somme d'argent décente, vous ne regretterez pas d' avoir suivi ce cours. Comme tout le monde sait que la Floride est une technologie tendance et a changé la façon dont nous créons des applications. Il s'agit d'un outil multiplateforme pour créer des applications pour Android iOS Web Deck stop avec une seule base de code. Dans ce cours, nous apprendrons tout à partir de zéro. C'est pour les débutants absolus. Nous comprendrons les widgets, comment gérer les concepts de navigation d'état, gérer les entrées utilisateur et intégrer l'API Rest. Tous ces concepts suffisent à vous donner confiance en tant que développeur. Alors, avez-vous saigné pour le travail de vos rêves ? Donc, sans gaspiller plus que l'objectif commence. 2. Créer une nouvelle structure de fichiers de projet et de compréhension: Le moment est venu de créer notre tout premier projet en Floride. Maintenant, pour nous assurer que flutter est correctement installé, nous pouvons simplement utiliser une commande comme la version flutter. Ouvrez d'abord votre invite de commandes , puis sélectionnez simplement cette commande et appuyez sur Entrée. Si vous ne voyez aucune version, vous l'avez correctement installée. Et s'il existe également des versions plus récentes, alors vous pouvez également voir qu'une nouvelle version de Floride est disponible. Mais en ce moment, nous allons travailler avec Flutter 2.2 si nécessaire ultérieurement et ambigu, nous allons mettre à niveau mais nous ne savons pas. Les données CRF sont correctement installées dans votre système. Maintenant, créer le Florida Project directement à mes enfants, il y a deux façons. La première consiste à utiliser Android Studio. Si vous utilisez le lot Android Studio, vous pouvez simplement ajouter Android Studio et installer extensions requises, car il y aura un outil d'extension dans Android Studio comme bien. Il vous suffit de télécharger ou d'installer les outils de données. Mais je ne préfère pas l'étude enrichie parce que tout d'abord , c'est très, elle utilise beaucoup de vos sources PCD. Cela ralentit, je suppose que parce que je suis un mode d'utilisateur de VS Code ou que je meurs texturalement, je préfère nous coder. Donc, c'est Wave. Nous allons utiliser le code VS. Assurez-vous de l' installer dans votre système. C'est très facile. Tu peux juste y aller. Maintenant, pour commencer par créer un projet, allez dans le dossier où vous voulez votre premier projet. Ensuite, il suffit d' y ajouter une invite commune et d'écrire simplement, Flutter, créer. C'est le code. Vous pouvez également dire, attendez de créer un nouveau projet. Et après la création, quel que soit le nom que vous donnez sera un nom de projet qui correspond au nom de votre application. Vous pouvez dire évidemment que vous pouvez le modifier plus tard. Ce n'est pas un problème. Nous ne ferons qu' un tutoriel de flottement. Tutoriel, ok, cliquez sur Entrée. Il vous suffit donc de télécharger et de créer votre projet évasé. Si vous voyez que tout est fait, c'est tout. Vous l'avez fait correctement. Dans, projet Inside Definitivement. Vous verrez peut-être beaucoup de fichiers dont nous ne parlerons que maintenant. Mais avant cela, nous ajoutons simplement du code VS de la cour, allons au fichier et ajoutons simplement. Et ici, il vous suffit d'ajouter votre projet comme celui-ci. Vous voyez donc des dossiers et des fichiers présents. Vous avez réussi à utiliser VS Code. Maintenant. Maintenant, ce que nous allons faire, nous en verrons plus sur la structure de ces deux dossiers. Il existe différents dossiers. C'est Android, iOS live, test de spec dot YAML que web, lord of thing dossiers et fichiers. Nous devons simplement nous rappeler que le dossier Android est endroit où sont stockés les fichiers supprimés Android. Nous ne changeons pas beaucoup cela. Nous l'utiliserons simplement pour certaines choses comme quelle sera l' icône de votre application, appareil Android, quel sera le nom de l'application ? Très peu de choses spécifiques à Android sont des plugins, mais pas tout le cours. La même chose avec le dossier iOS plié iOS est tous les fichiers qui seront utilisés pour construire une application iOS. Mais nous allons simplement faire ces changements, petits changements qui avaient acquis le nœud, pas le code de couleur sombre. Maintenant que cette feuille tombe, c'est l'essentiel, c' est le dossier que nous allons l'utiliser encore et encore. C'est là que nous travaillerons la plupart du temps. Par défaut, il contient Main.Jack. C'est le point d'entrée de l'application photo, comme je l'ai déjà vu dans cette section de données. Et ce point principal, point ou fonction principale est le point d'entrée. Si vous allez cliquer dessus. Cette fonction principale ici, sauvegarder. Et il y aura certainement d'autres citations aussi. Et vous pourriez être submergé à l'heure actuelle. Alors, ne regardez pas ce code. Rappelez-vous simplement cette fonction principale. Après ça. Il y a test, testez-le là où vous placez le code de test unitaire pour l'application. Lorsque vous êtes prêt, lorsque votre application est prête pour la production, vous devez la tester beaucoup de temps. Le test est un sujet complètement différent que nous ne couvrirons pas car avant de passer le test, vous devez disposer d'une application de flutter structurée très propre. Et puis le fichier suivant et très important est le fichier YAML Pub spec dot. Ce fichier définit la version et le numéro de version de votre application. Si vous le voyez, nous verrons simplement cette version et elle sera utilisée lorsque vous publiez votre application dans n'importe quel endroit, torr ou iOS Store. Les premières utilisations sont ceci, puis ces dépendances. Et vous vous demandez peut-être ce que sont les dépendances ? Nous le verrons et le comprendrons également dans la prochaine vidéo. Parce que les dépendances signifient que votre application dépendra certainement de logiciels ou de bibliothèques ou de plugins tiers. C'est également très important. Il devrait y avoir une vidéo distincte à discuter. Mais rappelez-vous que j'ai ignoré d'autres dossiers et fichiers car la plupart du temps, nous n'avons pas vraiment besoin de les toucher. Nous n'avons qu'à travailler sur leap, Pub spec dot YAML et un peu sur le dossier Android et iOS. Vous avez donc maintenant votre application de flottement. Il est temps de l'exécuter sur un appareil. Pour l'appareil, il suffit d'ajouter Android Studio car vous devriez avoir un émulateur. Si vous n'avez pas l'émulateur, vous pouvez également utiliser votre appareil Android physique. Il vous suffit de vous assurer que le mode de débogage est activé dans les paramètres de votre appareil Android. Ici. Oui, cliquez sur, configurez-le. Ici, j'ai un appareil. Vous pouvez également créer votre appareil virtuel. C'est très facile, mais j'ai cette grosse cellule trois APH serait 8. Je vais juste le faire fonctionner. Cela peut prendre un peu de temps. Voyez, votre émulateur est là, c'est dire appareil Android. Maintenant, ce que vous devez faire, c'est d'être votre code VS aller au point principal. Et dans leur exécution, il suffit de cliquer sur Démarrer le débogage. Et maintenant, vous devez attendre un moment, car pour la toute première fois, cela prendra du temps, mais vous pouvez rester. Il lance notre principal point sur ce qui émule le mode de débogage. C'est donc bien. Cela fonctionne. Je veux juste dire que l'inondation est un outil très génial. C'est comme si c'était très facile à comprendre et à travailler. De plus, vous avez compris que les concepts de base dans n'importe quel langage de programmation sont les mêmes que dans le langage sombre. N'oubliez pas que lorsque vous utilisez Android Studio, votre système peut être en retard. Est-ce qu'il peut se bloquer parce que son utilisation dans votre RAM. Vous pouvez donc ne pas utiliser ou faire autre chose pendant que vous travaillez sur un émulateur Android, car cela fait en lui-même que votre système fonctionne très dur. Et vous ne voulez pas planter car vous mettez à jour le système pas pu le gérer. Oui. Il montre les sorties de build flutter, APK, point de débogage d'application APK. J'espère donc que vous savez que cette extension APKs souvent application Android. Maintenant, d'accord. voyez, vous aurez cette largeur d'écran comme la page d'accueil de démo flotter. Et dans leur oreille moyenne, vous avez appuyé autant de fois sur le bouton et un bouton est là. Si je clique dessus, voir 1, 2, 3, 4, 5, il augmente. Nous avons donc enfin notre application flotter dans notre émulateur. Dans la prochaine vidéo, nous parlerons davantage concepts tels que les widgets et autres choses. Pour l'instant. J'espère que vous avez apprécié. 3. Quels sont les widgets: Aujourd'hui, nous parlerons de widgets. Quand nous travaillons en flirt. Vous rencontrerez ce mot beaucoup de temps parce que j'ai écrit avec effort la demande est un budget. D'un simple texte, deux boutons aux mises en page d'écran. Je vais juste vous montrer l'exemple. Si vous venez, si vous avez de l'expérience dans le développement Web, vous comprendrez qu'il existe une barre de navigation, champ de texte, une div, des tables dans Bootstrap ou en HTML. En flottement. Toutes ces choses que autres éléments de l'interface utilisateur sont appelés widgets. C'est ça. Ce n'est donc pas un concept très difficile. Je ne dis pas que les widgets le sont, moins que vous écriviez sur leader, mais pour la compréhension de base, vous devez vous rappeler que si vous voyez quelque chose sur cet écran, ce sera un widget. C'est ça. Maintenant, chaque widget aura des propriétés, ou vous pouvez dire des arguments que nous devons passer. Donc, si vous vous souvenez du concept d'arguments nommés du programme sombre précédent, doutez de tutoriels, nous l' avons déjà fait. la même façon. Je l'aurais fait. Widget est également une fonction que vous pouvez enregistrer car à l'arrière du code de base de flutter, il est mentionné comme argument nommé. Je vais juste vous donner un exemple. Ici. Certainement, ce code que vous ne devriez pas toucher. Vous verrez simplement de quoi je parle. Ce centre est un widget. Donc, sa propriété est acceptée est de 11. La propriété est appelée enfant. Imaginez simplement. Oui, je suis juste train de l'écrire ici. Nous avons un centre d'appels fonctionnels. Et ici, il pourrait accepter quelque chose comme argument nommé. Supposons un nom de chaîne. Ici, c'est la même chose, mais c'est une propriété rigide appelée enfant. C'est pourquoi nous appelons cette propriété enfant de réindexation du widget centré. Nous envoyons à nouveau un widget différent, cette colonne. Dans les prochaines vidéos, nous plongerons en profondeur dans tous les textes de colonne du centre budgétaire stable, quels qu'ils soient, les widgets que nous comprendrons chacun et tout. Mais pour l'instant, je veux simplement donner un aperçu de base. Au moins, vous devez savoir quelle est la signification du widget mot. Maintenant, vous pouvez rayonner, entendre cela, et cette propriété sera la plupart du temps accepté comme valeur, comme je vous l'ai dit, comme je vous l'ai montré que dans cette propriété enfant, Il accepte une colonne qui est encore Abhijit. Et la dernière chose, c'est que chaque widget commence par son nom suivi d'une parenthèse. Encore une fois, je vais ratter et supposer qu' il s'agit d'un texte rigide puis d'une parenthèse. Et en soi, vous avez d'autres propriétés. Supposons que l'enfant comme ça et ceci, encore une fois excepté, la valorise, mais dans un texte, ce n'est pas un enfant, je suppose que c'est différent, mais je vous donne juste un exemple de base. Maintenant. Voyez cette image. C'est une façon, s'agit d'une application construite à l'aide de flutter. Donc ici, si vous pouvez voir ce bouton de Verde, voici cette image ou cette flèche, tout cela, nos budgets. Ce texte est encore une fois un widget. Cette barre de navigation est à nouveau en moyenne. Un exemple. C'est une application de livraison de nourriture très basique, mais elle est tellement belle car elle est construite avec Flutter. Par conséquent, ces catégories sont également un widget appelé ligne car il est horizontal de gauche à droite. Ensuite, à l'intérieur de cette chose circulaire ou autre, ou l'icône de recherche se trouve également un widget. Il en est de même pour cet exemple. Cette barre de recherche est encore une fois un widget. Ce bouton de navigation est à nouveau un widget. Cette image est encore une fois un widget. Qu'est-ce que le widget est l'image. C'est ça. Vous le verrez dans la vidéo suivante. Je veux juste vous montrer que, peu importe ce que vous voyez à l'écran, ils sont tous différents, différents widgets. C'est ça. Nous ne le faisons pas si vous êtes débordé, alors ça va aussi parce que c'est très bien. Vous n'avez pas fait notre travail, fait quoi que ce soit comme ça, mais c'est très simple. Ok, jusqu'à présent, c'est suffisant pour ce sujet de widgets. Merci. 4. Travailler avec un fichier d'actifs et Pubspec: Au cours de la session d'aujourd'hui, nous aborderons un thème très élémentaire des actifs. Vous vous demandez peut-être ce que sont les actifs ? Imaginez simplement que vous avez une application, et certainement dans cette application, vous aurez des images, des images différentes. Vous êtes le logo d'une entreprise, des fichiers de polices différents, des animations, peu importe ce que vous voyez, vous avez des fichiers différents pour votre application. À ce moment-là. Vous devez vous assurer de l'avoir fait. Vous avez dit que pour votre projet flutter, ce sont les atouts que je souhaite inclure dans ma demande. C'est ça. Jusqu'à présent, ce que vous devez faire est d'aller dans le dossier de votre projet de filtre. Vous verrez différents dossiers ici. Il suffit de créer un nouveau dossier de ressources. Ou que voulez-vous dire par « donner » ? Je donne généralement des ressources informatiques parce que c'est pratique pour moi. Ensuite, dans les actifs, quels actifs vous voulez si vous avez juste si vous le souhaitez, vous pouvez également déposer tous vos fichiers ici, par voie électorale. Mais je préfère ça. Encore une fois, la création d'un dossier d'images est si vous le souhaitez. Désolé. Si vous voulez. Si vous le souhaitez, vous pouvez également avoir différents dossiers, tels que les fonds sont peu importe. Ainsi, vous avez correctement votre ancienne structure de dossiers. Maintenant, dans les images, il suffit d'aller copier n'importe quelle image de votre choix et de la coller simplement. Je l'ai si nous voulions voir l'image. Maintenant, ce que vous devez faire c'est que vous avez correctement votre dossier ici. Mais maintenant, c'est l'heure. Nous mettons en œuvre notre projet de Floride, c'est le dossier Assets. Pour ça. Vous devez accéder à ce fichier KML. Maintenant, rappelez-vous simplement que ce fichier YAML de point de spécification Pub est très sensible, très bien, car si vous avez un onglet supplémentaire ou un espace supplémentaire ou autre, toute votre application se bloquera. Alors rappelez-vous et soyez très prudent. Ne touchez à rien. Rappelez-vous juste ici. Pourtant, vous pouvez voir ces atouts qui se trouve dans le commentaire. Il suffit donc d'aller à un et avant un et d'empiler deux fois l'espacement arrière. C'est ça. Et là encore, retour arrière deux fois. Pas plus que cela, car si vous voyez un genou, oubliez pas de défaire et d'essayer à nouveau. Maintenant, ces actifs, le code n' est fait que pour mentionner les noms de dossiers. Ici. Je vais juste l' écrire dès le début. C'est comme des ressources, puis des images, puis une jambe, c'est tout. Cela signifie simplement ce dossier de ressources. Dans ce dossier, un dossier d' images vient d'être téléchargé. Je vais arrêter ma session de débogage en Floride. Depuis que vous avez fait un changement, les charnières de l'entraîneur. Et tout simplement, si vous voulez inclure des polices ici, c'est la police où il vous suffit de l'annuler, de la décommenter suffit de l'annuler, de la décommenter et de mentionner l'emplacement de votre fichier de polices. le moment, nous ne traitons pas de polices car ce n'est pas la chose la plus importante dans votre application pour les débutants. En savoir plus sur ce fichier de spécifications Pub. N'oubliez pas que la première chose importante est cette version. Et pour l'instant, nous ne l'utiliserons pas. Vous ne l'utiliserez que lorsque vous publiez votre application sur n'importe quel Android ou App Store, Apple App Store. Le deuxième est le dossier de ces dépendances. Maintenant, vous me demandez peut-être quelle est cette dépendance ? Si vous avez un paquet externe, notre plugin pour implémenter en année l'application flood, nous utilisons ce truc de dépendances. Et quand je vous parle d'un paquet externe, pour cela, vous avez un site Web appelé Pub Deaf. Vous pouvez simplement voir est un gestionnaire de paquets pour l'application Flutter. Ici, vous obtiendrez beaucoup de paquets et tout. Voir la partie analyseur, sélecteur de numéros de connexion Google et j'y participe. Cela vous aidera donc à construire l'application très rapidement, et vous devez certainement l'utiliser. Je vais donc aller chercher. Supposons HTTP. Vous disposez ensuite de cette bibliothèque STDP. Il suffit d'y aller. Et leurs dépendances, il suffit de le copier comme ça et de le coller ci-dessous, comme ceci et de l'enregistrer. Mais pour l'instant, nous ne le faisons pas parce que cela dépend. Ensuite, la sous-unité que nous utilisons à l'heure actuelle, voulez au moins vous montrer ce que sont ces actifs et le fichier YAML Pub spec dot. Et quelles sont les dépendances externes vous utiliserez abondamment plus tard lorsque nous construirons une application de données intermédiaires ? J'espère que vous avez compris les concepts. Merci. 5. Widget de texte et ÉCHELON: Il est donc temps, dans cette session, d' aborder directement le concept des flottements. C'est-à-dire que nous devons avoir les mains sales en écrivant du code nous-mêmes. Sortez votre code VS et accédez simplement à Main.Jack. Maintenant, ce que vous devez faire c'est simplement aller supprimer tout ce code à l'exception de la fonction principale. Tout comme ça, nous supprimons tout le code. Et dans le fichier main.js, qui est le point d'entrée, vous devez simplement écrire mon application, mon application matérielle, puis titre ma première application. Et puis à la maison. C'est ça. Nous avons donc importé le paquet de matériaux tout en haut car nous les utiliserons Material Design riche, développé par Google, la conception matérielle d' Android. Pour iOS, vous avez un package Cupertino, vous pouvez également utiliser le package Cupertino, mais il ne fonctionne que sur le système Mac. Diriez-vous que vous aurez besoin d'un appareil iOS pour le rendre beau. Mais la plupart du temps, vous utiliserez Material Design et utiliserez simplement quelques iOS. Les boutons sont également des éléments si vous le souhaitez à l'avenir. Et vous pouvez également voir que nous mettons en œuvre des dettes Material Design. Pourquoi nous utilisons l'application de métadonnées ici. Et l'application matérielle est vierge. Comme je l'ai dit, c'est le nom, puis les parenthèses, qui acceptent deux propriétés. C'est le titre le plus rapide et le second est entier. Titre est le nom de votre application qui apparaît dans ce texte, mais il s'agit du lieu. Sortez de votre application lorsque votre application est en arrière-plan. Mais cette maison est la disposition principale qui sera visible par l'utilisateur. KV a donc notre première application Flutter. Vous avez compris jusqu'à présent que la fonction principale est le point d'entrée. Après cela, vous me demandez peut-être quelle est cette application run-up ? Est-ce la faute ? Ce que vous direz c'est la vue par défaut du flottement de l'exécution de notre application. Il suffit donc de s'en souvenir parce qu' il est prédéfini. Prédéfinis, nous ne pouvons pas le faire ou nous ne pouvons pas le modifier. Mais nous pouvons en savoir plus sur les widgets, qui est le concept central. Donc, tout d'abord, nous parlerons de ce widget de texte. Dans n'importe quelle application. Certainement, vous devez mettre quelque chose à lire pour que l'utilisateur puisse lire. Je pense que c'est son nom d'utilisateur ou quelles sont des données de base simples. Pour cela également, vous devez d'abord savoir quel widget utiliser pour imprimer à l'écran. Auparavant, nous avions l'habitude d'écrire l'impression dans ce code sombre. Parce qu'à ce moment-là, nous imprimions simplement dans cette console de débogage, ce qui n'était rien. C'était juste plus loin que la commodité des développeurs. Mais maintenant, nous allons écrire quelque chose qui sera montré à l'utilisateur qui est une application. Le texte est donc ce widget en tant que nom de toluène , puis entre parenthèses. Et là, c'est à part la première chose comme une chaîne, qui est un argument positionnel. Vous devez vous souvenir de ces concepts sombres par cœur pour vous assurer de ne pas être confus. Demandez ce que c'est, pourquoi ce paramètre est envoyé comme ceci et non en tant qu'argument nommé ? Je reviendrai également à l'argument du nom. Mais maintenant, il vous suffit de sauvegarder, puis d'afficher votre émulateur et d'exécuter votre application. Et vous pouvez aussi voir que testfile est sien parce que nous avons supprimé les tribunaux. Si vous le souhaitez, vous pourrez simplement supprimer ce test rigide. Pour l'instant. Parce que nous n'en avons pas besoin. Encore une fois, exécutez simplement votre application. Vous, encore une fois, vous devez le faire, ça peut prendre un certain temps. Lors de la dernière session, nous avons également compris comment importer des ressources. C'est pourquoi nous devons pouvoir vendre cette session de débogage cette fois-ci. Si nous effectuons des modifications essentielles dans l'application, nous devons arrêter le débogage, puis le redémarrer afin que cela sache quelles sont les modifications apportées à son impression. Je veux juste que vous vous familiarisez. Habituez-vous à ce concept de widget d' écriture qui est prénom, puis parenthèse, puis à l'intérieur des parenthèses I, puis il s'agira d'un paramètre de nom comme ce titre ou nom sur un paramètre national comme ce champ de texte. Encore une fois, il faudra attendre un peu. Cela prend un peu plus de temps. C'est au moins nos APK de débogage en cours de construction. C'est un processus qui prend beaucoup de temps. Mais pour qu'une bonne chose arrive, il faut attendre. Il suffit d'ignorer ce qu'ils étaient affichés dans la console de débogage. Nous n'avons pas à nous inquiéter à ce sujet. Mais voyez, maintenant la sortie sera ici. Et nous avons une première application Predator très moche. Mais il suffit de voir que nous avons réussi sortir des textes sur l'écran de l'application. Cela signifie que si vous avez publié cette application, si vous avez publié cette application plaît à tous les utilisateurs, chaque fois qu'ils ajouteront cette application, ils verront ce texte de ma première application Flutter. Maintenant, vous pensez peut-être que ça a l'air très moche. Ce texte est collé en haut et que ces blancs pour le rendre beau, nous utiliserons notre prochaine région. C'est un widget d'échafaudage. Qu'est-ce qu'un échafaudage ? Pour changer la couleur de l'application entière ou utiliser boutons de la barre AB, il y a quelque chose comme naviguer, feuille inférieure ou quoi que ce soit. Nous utilisons ce widget d'échafaudage. Il donne une belle apparence à votre application. Il contient tous les éléments nécessaires. Maintenant, nous allons simplement accéder à notre code. Tout simplement à l'intérieur de la maison, vous retirerez et écrirez des échafaudages. Il s'agit également d'un widget qui acceptera et ne saura pas quelles propriétés sont acceptées. Vous pouvez simplement contrôler et espacer et voir ici d'abord que ça alimente mon labo. Ce sont toutes les propriétés qu'il accepte. abord, vous pouvez choisir APA. Cette partie, encore une fois, à l'exception d'un widget d'application. Le côté du widget Bart. Encore une fois, cliquez sur Tapez Control plus space. Voici beaucoup de propriétés dont nous avions besoin par deux. Ensuite, ce titre acceptera le texte, des roches flottées. Et maintenant, vous redémarrez. 21 Je peux simplement contrôler S. Et maintenant, voyez ce changement. voyez, c'est très beau qu'avant. Juste parce que nous avons utilisé un widget d'échafaudage. Que ce soit ici, peu importe ce que vous voyez, c'est cette barre AB ou cette chose blanche à l'intérieur à cause de cette casquette pour widget. Maintenant, cette partie blanche est le corps dans lequel vous allez produire ce que vous voulez montrer à l'utilisateur dans les premières propriétés de l'échafaudage. Ensuite, vous allez juste après ce contrôle de virgule, l'espace et le corps droit. Dans le corps, vous aurez un autre texte qui nous permettra de clarifier l'application. Et encore une fois , Contrôlez S. Vous pensez peut-être que rien n'est montré. Et cette raison est que cette couleur de ce texte et de l'onglet de couleur Arrière-plan est deux. Maintenant, pour changer la couleur de fond, j'irais simplement à l'échafaudage à chaque lumière. Couleur de fond. Vous n'avez pas à comprendre ce que je fais en ce moment. Contexte, je suppose. Voyez si j'ai redémarré l'application. Il montre mon premier dépôt de couche parce qu'il s'agissait d'une couleur vide. Dans les prochaines vidéos, nous comprendrons comment changer de couleurs comme celle-ci. Je l'ai fait maintenant juste pour vous montrer la sortie du corps. Ce truc rouge est donc le corps du talon de votre application. Vous n'avez qu'à vous rappeler jusqu' ici que l'APA et corps sont la propriété du widget d'échafaudage. Apa a le titre comme propriété, qui accepte le widget texte loin maintenant, car titre titre, vous pouvez avoir n'importe quel widget dont nous discuterons un par un. Si nous voulons voir une autre propriété de la barre AB, vous pouvez simplement passer sous le titre et à droite, resserrer au centre. Et puis c'est vrai. Il s'agit d'une propriété qui dit elle-même qu'elle centrera ce titre. Titre de cette barre d'application. Nous irons au centre de votre application. J'espère donc que vous avez aimé apprendre parce que vous êtes capable de créer une application lettrée de base. Au moins, vous avez quelque chose à l'écran en ce moment, ce qui est très cool. Dans la vidéo suivante, nous en apprendrons plus sur widgets pour adultes car, comme je l'ai dit encore et encore, flotter est une question de budget. Merci. 6. Bouton d'action central et flottant: Nous allons donc continuer à explorer d'autres budgets. Comme Flint ne savait pas si vous avez une application très basique, elle ne s'applique pas uniquement à une UA avec du texte. Le prochain widget, dont nous parlerons est la visite du centre est très simple et fait ce que son nom dit. Il se centre vers le bas de n'importe quel rigide. Donc, si nous voulons centrer le texte dans le corps, nous pouvons envelopper ce texte dans une visite centrale. Vous pouvez donc le voir, ma réplication plate se trouve tout en haut à gauche. Si vous le voulez au centre du corps, c'est le centre de l'écran. Il faut juste l'envelopper. Et que voulez-vous dire par rapt ? Si vous y allez, vous pouvez simplement voir ce matériau à l'intérieur, puis c'est un échafaudage. Cette partie de l'application est enveloppée sous un échafaudage. Ce texte est encapsulé dans la barre AB. Maintenant, si je veux l'utiliser, budget du centre de texte, vous pouvez simplement y aller. Une étape consiste à copier ou à couper les soins. Ensuite, le centre de chai est rigide. C'est rigide. Ensuite, nous entrons à l'intérieur, nous avons une propriété pour enfants, et nous avons simplement tordu. Ceci est donc encapsulé par un autre widget centré. Et en passant à la caisse de notre application. Vous voyez, nous avons ce texte au centre de l'écran. Rappelez-vous, je vous ai dit que c'était une première voie et la seconde était que je vais tout simplement annuler. La deuxième façon est simplement Cu, cliquez sur cette ampoule. Pensez-y des correctifs. Et ici, vous pouvez créer un widget et simplement un centre. C'est également une autre façon de faire la même chose. Parce que lorsque nous avons une application plus grande, il est impossible de couper et de coller tout le temps car il y a beaucoup de virgules, ne sont pas des crochets impliqués dans notre application. Maintenant. Alors rappelez-vous, nous ne pouvons pas simplement imprimer directement de la chaîne à l'intérieur de ce centre, comme je vais juste couper et voir que vous pouvez simplement écrire directement une chaîne ici comme ceci. Non, vous devez utiliser la propriété enfant à l'intérieur de cet enfant. Vous l'avez fait, et vous devez utiliser un autre widget, c' est-à-dire un widget de texte. ce moment, nous utilisons, mais comme enfant est un type de widget de type de données, vous pouvez voir ici, si je le survole, cela signifie qu'il acceptera n'importe quelle région. La loi que nous n'avons pas appris sur d'autres widgets. C'est pourquoi j'utilise simplement le widget texte de base. J'espère que vous avez compris le widget central. C'est un widget très basique. Maintenant, le prochain widget dont nous parlerons est le bouton d'action flottant. Je suppose donc que vous connaissez déjà l'application WhatsApp. Dans votre application WhatsApp, en bas à droite, vous verrez une icône sur notre bouton. Il s'agit du bouton d'action flottant. Nous pouvons donc implémenter le bouton d'action flottante par la propriété, du même nom que le bouton d'action flottant pour la visite d'échafaudage. Ce que je veux dire par là. Vous avez votre échafaudage. Nous l'avons fait ici. Première propriété, nous venons de lui donner une couleur d'arrière-plan car nous devons la rendre rouge. Le deuxième établissement était le bar AB. La troisième propriété était le corps. Maintenant, nous avons cette virgule. Si je vais contrôler un C, il y a tellement d'autres propriétés qui sont exemptées. Mais nous allons utiliser le bouton d'action flottant. Ainsi, le bouton d'action flottant accepte le nom du widget. Bouton d'action flottant. Comme ça. Vous pouvez voir qu'il dispose désormais d'un bouton d'action flottant. Et il doit le soutenir, ce qui est obligatoire. D'abord cet enfant, et le second est pressé. Alors, mon enfant, nous n' aurons qu'une simple publicité textuelle. Je vais redémarrer notre sauvegarde de notre application afin que les modifications soient affichées dans l'interface utilisateur. Dans la partie droite, vous pouvez voir ce bouton Ajouter. Il s'agit donc d'un bouton d'action flottant. ce moment, lorsque nous cliquons dessus, il ne pense pas que si vous voulez voir, vous pouvez simplement continuer, pressé et simplement écrire, imprimer, bonjour et sauvegarder. Maintenant, si je fais un clic droit, si je vais cliquer sur notre bouton Ajouter. Dans le débogage, vous pouvez voir qu'il y a ce bonjour impression, impression. Mais l'essentiel est que vous compreniez que c'est la façon d'écrire le code d'une application flottante. Propriétés de l'engrenage, il y a des widgets dans les widgets. Là encore, les propriétés des données. Cette propriété va encore une fois , sauf certains widgets. Et puis ce non compressé est à nouveau la propriété du bouton d'action flottant. faut se rappeler où elle commence, où elle se termine, quelle propriété est rigide. Et si vous avez encore des pays, j'aimerais juste dire qu'elle vous que supposé que c'est une fonction. Nous appelons une fonction de bouton d'action flottant , puis nous envoyons deux arguments nomment ces humains. C'est le premier, sauf enregistrer le widget. Et le second accepte une fonction. C'est encore une fois pour chaque lettre de daft rigide qui est toujours en majuscule. Vous pouvez voir ce f, ce t, son centre, l'échafaudage S. Donc chaque widget a une lettre majuscule phosphore, et chaque propriété accepte un autre widget comme valeur. s'agit donc d'une propriété enfant, elle accepte du texte et toutes ces propriétés ont une statistique avec ces petites lettres a, B, a, une barre, un bouton d'action flottant. Celui-ci, qui est la propriété, ce f est une petite lettre. Et dans la plupart des widgets, cette propriété enfant deviendra. Et ici, vous pouvez voir un enfant, c'est aussi un enfant. La propriété de l'enfant sera donc commune. Plusieurs chiffres à deux chiffres. Si vous êtes encore confus, je vous demanderai simplement faire une pause pendant un certain temps et d'essayer le faire vous-même et de faire quelques erreurs que vous le compreniez correctement. Mais j'espère que cette vidéo a été effacée et vous a donné les informations de deux widgets ou plus. première est la visite au centre, et la seconde est le bouton d'action flottant, dont nous discuterons davantage dans les prochaines vidéos. 7. Changements de couleur et de style: Salut, bon retour. Au cours de cette session, nous allons apprendre à changer couleur et à donner du style à nos éléments. Maintenant, pour changer la couleur de tous les éléments tels que la barre AB v ont certaines propriétés. Comme dans une barre d'application il existe une propriété appelée background-color. Maintenant généralement sympathique, nous avons affaire à d'autres propriétés. Nous avions la valeur d'une chaîne ou d'un entier, ou d'un widget. Mais maintenant, un autre cas est un peu différent. La valeur d'une couleur est conservée à l'aide du clavier. Faisons un point et suivis du nom de la couleur. Maintenant, faisons-le pratiquement. Nous allons maintenant changer la couleur de notre barre d'applications, allons maintenant voir d'autres propriétés ici. Et l'un d'eux est la couleur de fond est juste des couleurs droites, foncées, ambrées. C'est l'une des couleurs. Maintenant, vérifiez notre application. Ce bleu, est-ce que ça change ? Oui, ça a changé. Il est maintenant de couleur jaune. jaunâtre. Vous pouvez vous séparer, mais c'est une nuance différente, définitivement. J'espère donc que vous avez compris qu'il est très facile de donner de l'insouciance. Ces couleurs pointent et si ce widget a une propriété qui est ici, sa couleur d'arrière-plan, dans d'autres limites, il peut y avoir différentes. Maintenant, pour changer la couleur du bouton d'action flottant, encore une fois, nous devons aller vérifier s'il y a une propriété. Maintenant, vous pouvez voir qu'il y a une propriété appelée couleur d' arrière-plan, et nous allons simplement écrire des couleurs. Dot plus tôt. Cette couleur était bleue. Je vais juste le rendre vert. Voyons voir. Est-ce que ça marche ? J'espère, oui. Oui, il a changé. Il est donc évident que lorsque vous créez une application réelle, vous aurez des combinaisons de couleurs différentes pour votre application. Il est donc nécessaire de comprendre cela, quelle couleur utiliser et comment implémenter le code couleur. La prochaine chose, ce que nous avons, ce que nous allons faire, c'est comment styler cet élément de texte. Changez donc la couleur, nos cadeaux, le style en texte. Nous devons donner une propriété de style au widget texte. Encore une fois, vous pouvez lire qu' il y a une propriété appelée style. Passons à l'élément de texte. Ce premier argument est un argument positionnel à 0. Le prochain, voyons ici. Oui, un style orienté texte alignant le texte. Je vais utiliser la propriété style. Maintenant, comme je l'ai mentionné, un texte que nous acceptons également différents arguments. Mais cela rappelez-vous que la première propriété est vecteur positionnel v mentionné le texte réel. Et d'autres propriétés sont des arguments nim, comme l'une d'elles est serrée. Maintenant, la propriété style acceptera un autre widget comme valeur, qui est le widget de queue de texte de style. Donc ici, il suffit d' écrire un style de texte. Et au cours de ce week-end, mentionnez que les propriétés que nous voulons changer. Comme tout d'abord, j' aimerais changer cette couleur. Couleurs, bleu foncé. Voyons voir ici. Est-ce que ça change ? Oui. De plus, je voudrais supprimer ce fond de couleur rouge. Ce n'est pas beau. C'est donc fait. D'accord. Maintenant, la prochaine propriété que nous utiliserons est la taille de la police. Passons maintenant la taille de notre police à 30. Désolé, la taille de police, ça devrait être amusant. Dit, oui, il accepte un entier, on peut dire la valeur W. Voyez donc que la taille de la police a changé. La prochaine propriété que nous utiliserons est leur style de police. Et il y aura un style de police, italique et normal. Alors, quel est cet italique ? J'espère que vous savez qu'il ne fera que lui donner une position inclinée. Ici. Vous voyez ça ? Et ni l'un ni l'autre des décrochage que nous avons utilisés n'a de poids font-weight Police avec sondage à points. Il aura juste un regard plus audacieux. Voir. C'est ainsi que nous appliquons le style à notre élément de texte. Oui, rappelez-vous, il y a aussi leurs propriétés. Ici, vous pouvez simplement vérifier son arrière-plan, son arrière-plan, sa couleur, sa décoration, sa police, famille, sa hauteur, son espacement des lettres, son espacement des mots, ses ombres. Donc, si vous le souhaitez, vous pouvez utiliser tous ces éléments. Mais c'est très américain Pacifique si nous voulons l'utiliser ou non. Mais généralement, dans la plupart des autres obligations, vous utiliserez taille de police colorée et le poids de la police. De plus, si vous voulez vous assurer que le texte est mis en surbrillance, vous pouvez le dire. Donc. J'espère que vous avez compris ce concept de changement de couleur et de style. C'est tout pour cette session, nous en apprendrons plus sur les widgets dans les prochaines vidéos. 8. Quels sont les widget Stateless: Bonjour, Cette session est très importante car nous allons discuter de ce qui est une région apatride. Jusqu'à présent, nous écrivions du code uniquement dans notre fonction principale. Mais ce n'est pas le cas lorsque nous croyons à l'obligation, osez, nous devons absolument séparer notre code en morceaux plus petits et les utiliser partout où cela est nécessaire. Nous pouvons créer notre propre widget, qui continuera sur les autres widgets qu'il contient. Quels types de widgets de construction personnalisés sont des régions sans état et avec état ? instant, il suffit de se concentrer sur un état moins rigide. Nous allons certainement s'inquiéter l'autre région dans les vidéos ultérieures. Vous pouvez donc voir ici que nous pouvons créer une région apatride en étendant notre classe à une région apatride et en appliquant un minimum de bière comme celui-ci. Il s'agit donc d'un code très basique d'un widget apatride. Allons dans le fichier moyen, nous allons avoir un nouveau fichier appelé point d'accueil. Maintenant, vous pouvez tout simplement d' abord importer un paquet matériel. Ensuite, vous pouvez avoir un écran d'accueil de classe, qui étend la région apatride C. D'accord ? est donc fini ici. Il suffit maintenant d'aller cliquer sur cette ampoule. Vous pouvez voir qu'il manque 11 remplacements. Si vous cliquez dessus, il vous donnera cette chose. Donc, ici, il suffit de retourner quelque chose. Je vais juste rendre cet échafaudage ici. Voyez donc notre premier écran, c' est-à-dire que l'écran d'accueil est écrit, qui est une région apatride. Vous me demandez peut-être, d'accord, mais que signifie exactement le widget d'état ? Souvenez-vous simplement que les données d'un widget sans état ne peuvent pas être modifiées après le rendu. Supposons que nous voulions qu'après avoir cliqué sur le bouton, la couleur du texte soit modifiée. Cela n'est pas possible en lecture apatride car cette couleur, c'est-à-dire le vert, est rendue. C'est à ce moment que nous ajoutons notre application, elle est rendue. Donc, dans un apatride vraiment, il n'est pas possible de changer la couleur. Plus tard. C'est comme si nous n'avions pas cliqué sur User faire Harvard ou quoi que ce soit. Si l'utilisateur interagit avec lui, alors pour ce genre de choses, vous devez avoir un widget avec état. Mais vous comprendrez lentement la différence entre les deux. Maintenant, ici, n'importe quel nom, c'est un widget apatride. Il y a un nom du widget, et il doit éviter la fonction appelée buildup, qui renvoie un widget en tant que type de retour. Et ce widget signifie que cela peut être un échafaudage, cela peut être un conteneur, ce peut être un bouton, cela peut être une icône. Ce n'est donc pas comme si le widget apatride était toujours un écran complet. Il peut également être défini, mais il s'agit également d'un morceau de codes séparés. Il n'est pas nécessaire de prendre autant de stress à l'heure actuelle. Il suffit de suivre le flux. Voyons maintenant. Implémente, mettons en œuvre le widget date moins. Maintenant, ce concept, donc ce que vous devez faire est simplement d'aller là-dedans et de couper cet échafaudage et de le coller ici. Maintenant, dans ces foyers, pouvez-vous juste avoir à écrire l'écran des maisons ? Et dans ce haut, vous devez importer cet écran comme ceci. Maintenant, si je redémarre, vous verrez que rien n' a changé. Mais nous avons notre écran d'accueil sur un fichier séparé qui existait moins rigide. Et ce que j'entends par apatride, j'aimerais l' expliquer encore une fois. C'est que cette couleur du texte bleu ne sera pas modifiée si j' essayais de cliquer dessus sur cette annonce. Donc simplement, c'est la signification d'un widget apatride. Maintenant, si je veux changer cette couleur de cet ambre pour laisser redire quoi ? Vert, disons bleu. Voyez-vous, vous savez, et si vous voyez maintenant Control S Hot Reload fonctionne parfaitement. Et ce n'est pas parce que nous avons tout écrit dans le numéro 5 principal. Pas comme ça rigide. Mais maintenant, lorsque nous appuyons sur Control S, cette fonction de facturation est de nouveau rendue. Il est appelé et est rendu à nouveau. Mon premier projet de lettre tous les jours et je viens de toucher Control S. See, ça fonctionne parfaitement. Alors maintenant, c'est pourquoi Hood Hot Reload fonctionnera. Maintenant, je couche, vous pensez peut-être pourquoi cela ne fonctionne pas simplement parce que nous ne nous sommes pas séparés dans un widget apatride et avec état. Parce qu'à ce moment-là, Lee qui fonctionnera sera rappelé et les changements seront effectués. J'espère donc que vous avez compris le concept de widget apatride et apatride. Et nous sommes en mesure de séparer votre code d'un fichier en plusieurs découvertes. Plus à ce sujet, nous apprendrons certainement quand nous construirons certains projets de base. Mais à l'heure actuelle, ces connaissances suffisent. 9. Asset et image du réseau: Aujourd'hui, nous allons apprendre comment afficher une image dans notre application. Jusqu'à présent, nous n'affichions que du texte, mais la vraie application contentera certainement des images. Il existe donc maintenant deux types d'images. Principalement. L'une est une image réseau et l' autre est une image définie. Maintenant, l'image réseau, lorsque nous la péchons pour l'image, cela signifie que l'image viendra d'Internet. d'autres termes, nous n' hébergeons pas cette image ou nous ne stockons pas cette image dans notre code de flottement. Donc, nous devons avoir dans l'URL de l'image pour la montrer. Tout d'abord, faites sortir votre navigateur et écrivez simplement n'importe quelle image de Google, vous le voulez comme logo flottant. Ensuite, j'ai tellement d'images, j'ai tellement d'images, je vais juste choisir cette image et écrire l'adresse de copie de l'image. Maintenant, vous pouvez voir cette syntaxe d'image réseau est image.network. Ensuite, nous devons coller l'URL à l'intérieur. Allons-y. Maintenant au centre, je vais supprimer ce texte et image.net et simplement le coller ici comme ça. Voyons voir. Sommes-nous en mesure de montrer l'image ou elle s'affiche, oui, voyez-vous, c'est la première fois que nous utilisons une image réelle dans notre application. Et c'était tellement facile. heure actuelle, nous supprimons les textes en couches rigides car nous ne pouvons pas passer deux widgets directement à l'intérieur de l'enfant. Ce problème sera définitivement résolu dans les vidéos ultérieures où nous discuterons du widget que nous pouvons utiliser pour afficher plusieurs widgets dans notre application. Maintenant, il y a aussi certaines propriétés, comme ici vous pouvez voir la hauteur. Donc la hauteur, on peut donner, si je réduit immédiatement la hauteur, très peu, très petite. Si je le change. Voyez comme ça. C'est ainsi que nous travaillons avec les images réseau. L'autre chose est maintenant une image de ressource pour insérer une image déjà présente dans votre système. Donc généralement, ce que nous faisons est de vous faire tomber images dans le répertoire racine comme celui-ci ici, nous avons créé des ressources et dit que nous avons créé un répertoire d'images auparavant parce que c'est structure de dossier très propre à créer. Maintenant, nous collons un fichier à l'intérieur mort comme ça. J'ai ce fichier PNG à 6 points de l'image. L'étape suivante consiste à donner à CO2 Pub spec dot HTML et décommenter la section des actifs que nous n'avons pas déjà aimé cela. Consultez la section sur ces ressources. Nous n'avons pas fait de commentaires. Il s'assure de l' indentation ou sinon il sera ajouté, ce qui signifie. Et ce dossier est très sensible. Vous devez donc vous assurer ne pas donner d' espaces ou d'onglets supplémentaires. Il fallait juste écrire comme ces acides. Maintenant, il saura qu'à l'intérieur de nos ressources, il y a des images. Nous serons des dossiers plus anciens. Vous pouvez également écrire l'emplacement de votre répertoire d'images avec ou sans le nom de l'image. d'autres termes, si nous ne mentons le nom de l'image comme celui-ci , alors je dirai que c'est correct car Vince télécharge toutes les images qu'il contient. Maintenant, en choisissant comment insérer une image de ressource plus tôt pour une image réseau, nous avons simplement surpris ce réseau. Maintenant, nous allons faire un jeu de points d'image, une image, un ensemble de points comme ceci. Ensuite, nous dirons simplement des décors, puis des images. Quel est le nom du fichier ? Émettre un PNG à 6 points. PNG à 6 points. Et maintenant, voyons, est-ce que ça marche ? Voyez, nous avons téléchargé notre fichier de ressources , c' est-à-dire notre application phare, saurait de quel fichier nous parlons. Et cela ne vient pas d'Internet. Maintenant, nous pouvons modifier certaines propriétés comme hauteur du lac, nous pouvons donner une valeur de 100 °C comme celle-ci. Nous pouvons aussi changer. Il s'agit des autres propriétés que vous pouvez modifier. Mais pour l'instant, nous n'en avons pas envie. Habituellement, la hauteur est correcte. Nous supposons 150 ans. Eh bien, ça a l'air bien. Il est donc très important de comprendre cette différence entre l' actif, l'image réseau, car dans votre application réelle, vous jouerez avec des images tout ce temps. Toutes les applications ont une sorte d'image. Soit c'est une image acide comme le logo de l'application, le logo. Il ne changera pas facilement. Nous pouvons donc simplement les envoyer dans notre code. Et la disponibilité, quelque chose comme l'image de profil d'un utilisateur. Il proviendra de la base de données car l'utilisateur va la modifier, ce qui le rend fréquemment. C'est ça la différence. C'est tout pour aujourd'hui. Dans les prochaines vidéos, nous parlerons d' autres widgets qui poursuivent notre session comme celle-ci. Merci. 10. Widget d'icône et de bouton: Il est maintenant temps d'en apprendre davantage sur d'autres budgets, tels que la visite Icone. La Floride est dotée de tonnes d'icônes qui peuvent être utilisées pour rendre notre application plus belle. Si vous voyez une application, que ce soit via Facebook, Instagram WhatsApp, vous verrez certainement une sorte d' icônes parce que c'est le cas, c'est très agréable à l'œil. Les utilisateurs peuvent directement se rapporter à cette icône. Maintenant, la syntaxe est très simple. Nous devons d'abord écrire une icône. Et à l'intérieur de cela, v ne peut pas simplement écrire directement le nom de l'icône. Nous devons écrire comme des icônes pointant n'importe quel nom d'icône. Supposons que je puisse démarrer l'utilisateur, que je puisse démarrer l'alarme, peu importe. Essayons ça. Je vais supprimer cet enfant de l'image. Maintenant. Je vais juste dire icône et ensuite je peux démarrer une alarme excédentaire. Maintenant, je vais simplement l' enregistrer et voir notre icône s'affiche à l'écran et c'est tellement facile. Maintenant, comme n'importe quel autre widget V utilisé, nous pouvons certainement changer sa couleur et quelques propriétés également. Maintenant, pour changer la couleur, nous allons simplement dire virgule, puis voir la couleur, roue, les couleurs, l'orange. Et ensuite, la taille. Je vais écrire à une centaine. Maintenant, vous voyez que la taille est tellement plus grande que j'ai donnée à un bord juste pour vous montrer que nous pouvons modifier ses propriétés de l'icône. Et le fait est que ce n'est pas que nous ne pouvons utiliser l' icône que dans ce corps. Maintenant, si je veux dans le bouton d'action flottant, je peux simplement écrire une icône puis des icônes, ce message là-dedans. Bouton d'action flottant. Voir. Vous pouvez donc maintenant le comparer avec WhatsApp. WhatsApp a également ce genre de choses que je peux me retrouver sur eux. Et ça a l'air très bien. Je dois dire qu'après le bouton d'icône, il y a un autre widget, qui est la région du bouton. Donc, sans bouton, toute application est inutile. Parce que des boutons sont là pour donner un feedback, ils prennent en compte les commentaires de l'utilisateur. Autrement dit, s'il est dit cerclage des codons Ajouter au panier. Et s'il s'agit d'un formulaire quelconque, vous devez le soumettre. S'il y en a un autre, si deux karma, si vous avez une modification dans votre, si vous avez utilisé une application quelconque, vous avez peut-être rencontré beaucoup de boutons. Donc, dans flotté, il y a trois types de bouton, texte, de bouton, de bouton surélevé, et je peux les mettre. Comprenons cela un par un. Alors, quel est ce manuel ? Donc, dans ce bouton de texte, il n'y aura pas d'allégement. Notre effet 3D comme celui-ci, si je retire simplement l'icône ici et j'écris du texte. Mais alors la première propriété est obligatoire, que cet enfant, c'est-à-dire que devrions-nous à l'intérieur de ce bouton, je ferai simplement un clic droit sur moi. Et le second obligatoire concerne les précesses. Que se passe-t-il lorsqu'un utilisateur clique sur ce bouton ? Voyez donc, il s'agit d'un bouton de texte. n'y a pas de couleur d'arrière-plan ni d'allégement, ou c'est simplement du texte simple. C'est pourquoi son nom est le suivant. Maintenant, si vous voulez vraiment changer ou coiffer notre bouton, vous pouvez le faire. Mais je ne pense pas que ce soit vraiment forcément parce que si vous voulez dire qu'il y d'autres mais la densité est élevée, mais un animal. Mais je vais simplement vous montrer comment changer leur style. Si vous voyez la propriété de tuile et qu'elle acceptera, s'il s'agit d'un texte, mais qu'elle acceptera des textes, mais ensuite le style de point depuis et à l'intérieur que vous pouvez simplement écrire primaire, c'est cette couleur de l' arrière-plan et cette orange. Voyez que la couleur a changé. Ensuite, si vous le souhaitez, vous pouvez donner un peu de rembourrage. Inserts de bordure, zones, non ? Il suffit de 10. Pour le rembourrage définitivement, il ne s'affiche pas en ce moment. Nous pouvons ajouter une couleur d' arrière-plan, un fond noir si vous voulez vraiment cette couleur. Parce que d'habitude, que se passe-t-il si vous voulez vraiment ce type de bouton ? Vous allez directement à lever le bouton car il vous donne automatiquement ces fonctionnalités. Mais c'est très bien. Ensuite. Quelque chose d'important ? Je ne pense pas. C'est très important. Non. C'est ainsi que vous affichez un bouton de texte. Et si vous le souhaitez vraiment, vous pouvez le coiffer en utilisant des textes, mais un style à 10 points et ensuite donner des propriétés différentes. Maintenant, rappelez-vous simplement si je retire ce style. Il s'agit d'un bouton de texte de base. Mais que se passe-t-il si j' utilise un bouton surélevé ? Si je suis simplement, la syntaxe est la même. Si je n'écris simplement qu' un bouton limité ici, alors vous voyez que la couleur d'arrière-plan est leur couleur de texte est blanche et une certaine allégement est le spin étant donné qu' un effet 3D est donné. C'est pourquoi nous utilisons un bouton surélevé, car il est très pratique à utiliser. Maintenant, encore une fois, si vous le souhaitez, vous pouvez le coiffer comme ici. Nous avons un style limité mais ensuite point de et primaire sera fait couleur d'arrière-plan. C'est ça, ça veut dire ça. Bouton dans le texte. Je veux dire, c'était la couleur du texte, mais ici c'est la couleur d'arrière-plan. Maintenant, si vous voulez un soulagement, vous pouvez simplement en donner cinq. Vous pouvez voir qu'il y a d'autres effets 3D. Si vous souhaitez modifier le rembourrage, vous pouvez modifier les incrustations d'arêtes. Lorsque T C, c'est le rembourrage est également fait. Maintenant, si vous voulez changer de forme. Vous pouvez également le faire à l'aide d'une bordure rectangulaire arrondie. Et puis point de bordure à rayon de bordure. Dans un point de rayon de bordure. Et vous pouvez utiliser dans des années ce circulaire comme a1 de tous les côtés, circulaire, rayon de point de polaire et en donner dix ici. Voyez-vous, si j'en donne deux en D, vous en remarquerez plus. Cette forme est modifiée par cette émission en raison de l'ADS que nous avons donné. Et ici, le style, vous les avez compris. Et ce sur site simplement ce qui devrait se passer lorsqu'un utilisateur a appuyé sur le bouton lui. J'écris le temps, j'imprime juste. Mais d'habitude, vous faites une sorte d' activité ici, voyez comme ça. Jusqu'à présent, nous avons discuté de textes, mais ensuite d'un bouton surélevé. Le dernier type de bouton est le bouton icône. Donc, ce qu'il fait, c'est une sorte d'icône sur laquelle nous pouvons appuyer et faire quelque chose. Et nous venons de supprimer le code précédent et simplement soulevé je peux. Mais ensuite, sur la presse, il y aura des boutons plus anciens. Et en icône. Je vous ai déjà appris comment afficher n'importe quelle icône. Cette icône est ici, à la caisse. Il s'agit maintenant d'une icône, mais vous pouvez cliquer dessus. Vous pouvez cliquer dessus ici. Maintenant, vous pouvez découvrir, vérifier quelles autres propriétés il accepte, comme les couleurs, l'accent bleu. Alors je peux dire que vous pouvez en donner 100. voyez, c'est tellement beau. Et s'il y a autre chose, couleur des éclaboussures, vous pensez peut-être, quelle est la couleur d'éclaboussure ? Voyons voir. Voir. Si je clique dessus. C'est la couleur d'éclaboussure. Et de même, il y a sur presse que je vais simplement imprimer. Je peux le faire. Mais voir dans le débogage, vous pouvez dire bouton Can. Nous avons donc réussi à couvrir les trois boutons. Il s'agit d'un bouton de texte surélevé , mais d'un bouton d'icône NDA. Et aussi comment utiliser les icônes dans notre application flotter. Dans ce bouton d'icône, rappelez-vous que la propriété enfant n'est pas présente. Ici. Je peux y propriétés qui acceptent une icône. Et dans les boutons Alda qui sont pressés sont obligatoires. Vous devez donc mentionner ce qui devrait se passer si quelqu'un clique dessus parce qu'il s'agit d'un bouton, vous devez savoir ce qui devrait se passer après cela. Donc, c'est tout. J'espère que vous apprécierez le cours et que vous en apprendrez davantage sur différents types de widgets. On se voit dans la vidéo suivante. 11. Widget de conteneur: Dans cette session, nous parlerons du widget conteneur. Qu'est-ce qu'un conteneur ? Un conteneur ne fait que contourner leur budget. Donc, si vous connaissez le concept de div dans le développement Web, cela fonctionne de la même manière que cela. Nous utilisons ce widget pour que nous puissions donner une marge d'alignement avec et beaucoup d'autres propriétés de cet élément sont les deux widgets qui s'y trouvent. Il suffit donc de le considérer comme un wrapper qui sera utilisé pour manipuler les autres widgets. Quelle est donc la syntaxe ? Sa syntaxe est très simple. Comme ça. Container est le nom du budget et les menthes enfants qui devraient se trouver à l'intérieur de ce conteneur. Alors, d'accord, commençons. Je verrais simplement déplacer ce code précédent et avoir un widget de conteneur ici. Chez l'enfant. Je vais d'abord avoir la région des ponts. Ce sera donc comme ça. Et pas ça. C'est comme si flirté était génial. Nous allons le sauver. Voyons ici. Vous pouvez donc voir que le texte est là, mais rien de tel que vous ne remarquerez même pas qu'il a été encapsulé dans un widget de conteneur. Donc, ce que nous devons faire si vous voulez voir ce conteneur, la première propriété que vous pouvez utiliser est cette propriété de couleur. Les couleurs commencent à crainte. Vous savez déjà comment utiliser color non. Voir. Donc maintenant, vous pouvez voir ce que c'est, cette chose rouge est ce conteneur, vous pouvez aussi le dire comme une boîte maintenant. C'est donc le conteneur et il a des propriétés différentes. Première propriété, deux premières, nous utilisons l'enfant et la couleur. Voyons maintenant ce qu'est le rembourrage et la marge. D'accord ? rembourrage et la marge sont donc utilisés pour donner un espacement entre les éléments. Qu'est-ce qu'un rembourrage ? rembourrage est l'espace à l'intérieur, qui signifie que vous pouvez voir ce génial II et la boîte, et c'est ici, un truc rouge. Le truc de la perspicacité se répand. Et le truc rouge finit par être bleu. C'est l'extérieur, l'extérieur, c'est la marge. Voyez-le avec l'exemple et nous lui donnons simplement une propriété de rembourrage, de remplissage et il accepte une valeur en tant qu'encarts d'arête. Ensuite, après, par exemple, si vous cliquez sur dot-dot-dot, vous aurez d'autres options de gauche, droite, gauche, haut, droite, bas sur Lee symétrique. Pour plus de simplicité, j' utiliserai tout ce qui provient du plus ancien site. Je vais lui donner 20. Maintenant, vous voyez, voyez d'après la perspicacité que ceci, ceci et ceci, c'est le rembourrage et il a l' air plus agréable qu'avant. C'est donc le rembourrage. Et ce que je disais, c'est la prochaine propriété qui est la marge et la fusion, c'est cet espacement en dehors de cela, que ce soit ici, voici le haut et la gauche ici. Donc, si je vais à marge et à nouveau marginal , j'accepte les valeurs, encarts d'arête, et pour tout cela, je donnerai 20. Vous saurez donc maintenant cette différence. Voyez de l'extérieur ici vous obtenez cette marge. Vous pouvez également lire ici. La marge est l'espace extérieur et le rembourrage. L'âge est l'espace à l'intérieur. Ces propriétés sont également présentes, telles que la largeur. Si je clique sur Attendre et que je lui donne une valeur de supposer AT, alors voyez cela se réduire. Si je donne un jour. C'est comme ça. Si j'y arrive, ça ira plus loin. Donc, ce sont les conteneurs à l'intérieur si je ne cède aucun moyen. Il faudra tout ce qui se trouve à l'intérieur. Il y a un texte et nous ne le sommes que. Maintenant. Une autre propriété se trouve à l'intérieur du conteneur, à savoir l'alignement. Et il l'a sauf l'alignement de Sibelius. Supposons en haut à gauche, en haut à gauche, en haut à droite Voyez maintenant, je dois donner un taux de 250 et une hauteur de 50, 58 ans. C'est moins après avoir mangé D. L'alignement. En ce moment. Le fait est qu'il n'y a pas d'autre élément, c'est que seul cet élément est ici. C'est pourquoi l'alignement ne fonctionne pas car la hauteur ou la position est ce côté et cette zone seulement. Si je viens de le retirer en C prend tout l'écran. C'est la chose que nous devons d'abord attribuer hauteur et le poids du conteneur de tout ce qu'il enveloppait à l'intérieur. Ensuite, seulement la pellicule. Cet alignement va fonctionner. Dans les prochaines vidéos , nous allons construire une application plus agréable. Ensuite, je vous apprendrai cet alignement et quand utiliser le code d'alignement. Parce qu'en ce moment, vous pensez peut-être : Non, cela ne fonctionne pas. Pourquoi cela ne fonctionne pas ? Il se peut que nous ayons trop de questions. Et cette propriété est la déclaration du widget conteneur, qui excepte la décoration de boîte comme valeur. Maintenant, à l'intérieur de la décoration de la boîte, vous pouvez également donner une forme. Forme de boîte, cercle. Décoration intérieure de la boîte. Voyez quand vous utilisez la décoration de boîte. Le fait est qu' ils ont également une propriété de couleur, de sorte que vous ne pouvez pas donner plusieurs couleurs. Dans ce cas, vous devez mentionner cette propriété de couleur à l'intérieur de la décoration de boîte. Et je vais encore donner du rembourrage pour que le cercle soit un peu plus beau, qu'il soit à l'intérieur. Maintenant, nous n'avons pas fait de décoration de boîte. Il y a une couleur, une bordure, un rayon de bordure, une ombre de boîte. Ces propriétés peuvent donc également être utilisées pour décorer votre conteneur, ce qui est très spécifique à vos besoins. Donc, si vous en avez besoin, vous pouvez simplement l'essayer vous-même. Dans les prochaines vidéos, nous parlerons donc nous parlerons des dernières visites qui restent à discuter. Merci. 12. Widget TextField: Aujourd'hui, nous discuterons de TextField Virgin. Ainsi, les textes permettent à l' utilisateur d'entrer du texte. Soit nous avons embauché très croquettes dans le clavier à l'écran. Il nous permet donc essentiellement de collecter des informations auprès de l'utilisateur. Si vous avez utilisé une application mobile, vous savez que le texte est l' épine dorsale de la demande de dette. Maintenant, quelle est cette syntaxe, c'est une syntaxe très basique du champ de texte TXT. Alors, comme vous le feriez notre parenthèse. Essayons ça dans leur corps. Je vais supprimer le conteneur précédent et lui donner du texte, un champ de texte. Ici. Si je l'enregistre, alors vous direz ceci, cette ligne. Et si je clique dessus, nous avons notre clavier. Je peux écrire ce que je veux. Mais le fait est que ce champ de texte ne ressemble ni ne dit rien à l'utilisateur. L'utilisateur ne saura même pas quoi y écrire. Pour cela, nous devons utiliser d'autres propriétés à l'intérieur, qui sont comme de la décoration. La décoration, et elle accepte la déclaration d'entrée est sa valeur. À l'intérieur de ça. Ici, vous verrez beaucoup d'options. J'utiliserai d'abord des indices ou des textes étiquetés. Maintenant, si vous le survolez, il accepte directement la chaîne, pas un widget. Nous pouvons donc juste dire, nom comme celui-ci. Et vous pouvez voir maintenant qu'il regarde jusqu'à 10, car lorsque nous cliquons dessus, nous savons ce que nous devons y écrire. Maintenant, en dehors des textes étiquetés, il y a beaucoup d'autres comme l'activation du compteur de frontières, activer, si cela échoue devrait être désactivé pour ce moment ou non. Les textes d'indice sont comme un nom complet, s'il vous plaît. Et si j'économise. Maintenant, dans ce texte, allez-vous voir cet indice. C'est-à-dire que nous devons écrire notre nom complet. Donc au moins nous pouvons donner quelques données factices sont un indice à l'utilisateur sur ce qu'il doit écrire. Une autre chose que vous pouvez avoir est une icône de préfixe. Les icônes donnent un peu de visuel. Vous pouvez dire visuellement cela semble bon lorsque nous utilisons un que je peux voir maintenant, ce texte est comparativement meilleur. Avec cette petite icône en direct. Il y a quelque chose de plus comme une bordure, que nous pouvons obtenir une bordure d'entrée de contour. Maintenant. Maintenant, vous ne pouvez pas le voir correctement. Je vais faire quoi ? Je vais juste l'enrouler autour du conteneur que nous venons apprendre et donner une marge d'avance. Encarts. 20. Vous voyez, cette frontière est si belle. Et ça a l'air plus joli. Et si je ne donne aucun point de bordure d'entrée, alors toute la bordure est en C déplacée. Mais j'aime généralement ce contour en poudre. Maintenant, vous pensez peut-être que seules autant de propriétés existent. Il y a donc beaucoup de propriétés dont nous allons certainement discuter correctement. Parce que sans champ de texte, nous ne pourrons créer aucune application. Maxlength nous dit simplement que le nom ne devrait pas contenir de caractères Dan non éclairés. Pas plus que ça. Il peut être utilisé lorsque nous utilisons un mot de passe, n'importe quel numéro de téléphone, il doit contenir un nombre spécifique de chiffres. Pas plus que ça. Et maintenant, pour l'instant, nous allons simplement voir la propriété onchange obtenir beaucoup qui est onsubmit autre, mais on change signifie qu'elle lui donne une fonction qui nous donne une valeur quel que soit son champ de texte renvoyé. Nous allons imprimer cette valeur dans notre console de débogage. Maintenant. Nous avons juste du flottement. Voir. Maintenant, avec cette valeur, si vous le souhaitez, nous pouvons l'affecter à une variable, puis l'utiliser partout où nous le voulons. C'est à nous de décider ce que nous voulons faire. Mais TextField a définitivement une règle importante. en discuterons plus dans le prochain module. Merci. 13. Colonne et ligne: Au cours de cette session, nous parlerons d'un widget très important. Nous parlerons donc de deux widgets. Le premier widget est le budget de la colonne. Donc, si vous l'avez remarqué jusqu'à présent, nous ne faisions que sortir un widget à l'époque. Mais cela ne se produit pas dans une application réelle. Un écran contient plusieurs widgets, tels que des textes imagés, mais un tout. Ainsi, à cette fin, un widget de colonne est utilisé car il permet de générer des widgets dans la direction verticale, c' est-à-dire de haut en bas. C'est pourquoi son nom est colonne. La syntaxe est très simple. Il suffit de sélectionner le nom de la colonne. C'est-à-dire que le nom rigide est colonne. Mais ici, une chose a changé maintenant parce que je vis avec chaque widget que nous utilisions la propriété enfant. Mais ici, ce sont les enfants. Et tout simplement parce que nous allons sortir plusieurs widgets. Et c'est pourquoi il s'agit d'un téléphone au pluriel. Alors oui, sortez votre éditeur de texte. Et je vais juste finir corps. Je vais juste voir déplacer le code précédent et la colonne de nuit. Ici, ce sera des enfants. Enfants. Nous vous insulinons simplement de scanner de haut en bas les éléments que vous souhaitez imprimer. Je vais juste ce premier V élevé, j'apprends. Flutter. Ensuite, le widget suivant, vous pouvez utiliser le bouton surélevé. Chez cet enfant, nous pouvons avoir un texte de soumission. Sauvons et voyons. Voir. Pour la première fois, nous avons pu imprimer deux widgets en même temps, le corps des index. Il s'agit donc de l'utilisation du widget de colonne si vous le souhaitez après l'élimination, mais vous pouvez ensuite utiliser le jeu de points d'image, puis définir les images, l'image six, PNG. Nous l'avons déjà fait, nous avons cette image ici. Voir. Maintenant, nous avons trois éléments sur la peau. Le premier est un widget de texte, second est un élément surélevé, mais ensuite, et le troisième est l'image. Maintenant, vous pouvez voir ici dans la section notes que les enfants sont utilisés. Au lieu d'un enfant. Tous les éléments sont séparés par une virgule parce qu'il simplement dit : C'est une liste de widgets, c'est-à-dire Y. Et chaque widget est l'ordre de ce widget sera le même que vous l'écrivez ici. Cette image n'est pas imprimée de haut en bas. Dead est un autre widget qui vous aide à imprimer un objet de gauche à droite. Donc, rho est aussi la même colonne. Il permet de générer plusieurs widgets, mais une ligne permet de générer des widgets dans la direction horizontale. Et nous allons d'abord changer la taille et le poids. C'est trop gros. Le poids sera de 100. voyez, il regarde l'évier maintenant. La syntaxe est identique. Je vais juste changer cette rangée. Donc, cette colonne à ranger et à enregistrer. Maintenant, cette chose horizontale devient verticale. Il s'agit donc d'un élément très important car lorsque vous construisez une interface utilisateur complète, chaque écran de Getty utilise une ligne ou une colonne. Combinaison des deux. Row a une autre propriété qui est l'axe principal aligne la dette. C'est ainsi les éléments doivent être affichés à l'écran. Donc, si nous écrivons l'espace uniformément, vu de gauche, de gauche partout, tout cet espacement des espaces est égal. Et si j'écris l'espace entre, l'espace entre, alors c est le côté extrême gauche et extrême. L'espacement n'est pas là. Et il y a aussi le centre. Tout va se réunir au centre. Donc, le fait intéressant est que le port de ligne et de colonne a cette sortie principale et croisement existant. La seule différence est que vous devez vous souvenir quand il dit dessiner les accès principaux de gauche à droite. Et l'axe croisé sera de haut en bas. Autrement dit, si je croise l'alignement de la croix de x, c'est centré. Je ne pense pas. C'est vraiment en ce moment, parce que l'élément est déjà au centre, car cela ne prend que autant d'espace, pas tout l'écran. C'est pourquoi il n'a pas été envoyé au centre. Mais le succès croisé pour une ligne signifie de haut en bas et principal existe de gauche à droite. De même, dans une colonne, l'axe principal est de haut en bas et l' axe transversal est de gauche à droite. Vous devez donc simplement vous entraîner seul et essayer de comprendre ce que je viens de dire. Parce que le concept est très simple. Colonne et ligne que nous sommes, nous l'utilisons simplement pour générer plusieurs éléments dans une certaine direction. Et nous pouvons également utiliser une colonne à l'intérieur d'une ligne et une ligne à l'intérieur de la colonne. Et grâce à cela, avec l' aide de ces personnes et de Lee, vous serez en mesure de créer une interface utilisateur complète. Merci. Ainsi, dans la prochaine session, nous parlerons un autre widget qui est très important et qui nous aidera également à produire plusieurs éléments. Merci. 14. ListTile et ListView: Dans cette session d' exploration des visites, nous parlerons de notre style de liste et de ce qu'est le widget ListView. Ainsi, un style de liste est une seule ligne qui contient généralement X, contient du texte ainsi que des icônes de début ou de fin de l'image. Vous pouvez uniquement comprendre comment, quel est un style de liste et son apparence. Certains peuvent être un peu similaires à l'interface utilisateur souvent ce que j'espère que vous aimez, vous avez un compte WhatsApp et vous êtes très familier à cela. Quelle est donc la syntaxe ? C'est simplement sa tuile. Ce sont là les propriétés qu'il accepte. Essayez-le moins seul d'abord. Je n'aurai qu'une vignette de liste au début. Ensuite, dans le titre, j'aurai le texte d' Elon Musk. Épargons. Voir. Donc, c'est ce que ça dit comme une rangée horizontale. Ensuite, l'autre élément, dont j'utiliserai l'autre propriété, est sous-titré aller à la lune. sous-titre est juste Seton, a une police plus petite et sa couleur par défaut est quelque part écrevisse. Ensuite, une autre propriété est en tête, c'est ce qui devrait être un front de duff. Je vais utiliser une icône ici. Et je peux commencer par le cercle de comte. Et nous allons lui donner la couleur des couleurs, bleu et de la taille pour t. Essayons. Voyez-vous, c'est ce que je disais. Il s'agit de l'icône principale. Et maintenant, une autre propriété, beaucoup de propriétés, mais une autre importante est la traîne. C'est ce qui devrait être à la fin. J'aurai un surélevé mais dix supposons. Et il n'aura que le texte de ce qui devrait être le texte. Ce n'est pas une bonne idée d' utiliser un bouton comme celui-ci. Dans cette traîne. Je vais juste avoir une icône. Mais si je le veux, alors dans l'icône, je l'aurai, je peux commencer différé. Voyez que nous avons une icône ici. La traîne signifie la fin de la chose horizontale, le vent de tête, l'élément avant. Et la dernière propriété importante est l'untap. C'est-à-dire ce qui devrait se passer. Qu'est-ce qui aurait dû être si l' utilisateur clique sur cette vignette ? Donc, dans la console que vous venez de voir, je cliquerai ici et je verrai alors il faut. Je ne parle pas de ce bouton. Ceci, c'est ce que nous avons fait, si nous voulons faire quelque chose de bien, nous devons l'écrire sur site. Mais tout ce truc de tuile imprime cet Elon Musk. Disons que j'ai cliqué sur cinq dixièmes. C'est pourquoi il est ici comme ça. Ce style de liste est également un widget d'interface utilisateur très intéressant car c' est un ensemble de toutes les choses qui peuvent être nécessaires dans notre application. Maintenant, nous savons déjà ce qu' est un widget de colonne. Je vais juste l'enrouler autour de la colonne. Je vois que rien ne changera. Maintenant, ce que je vais faire, c'est que je veux parler du prochain élément, qui est ListView. Mais avant d'y aller, j'aimerais vous montrer le problème avec cette chronique. Si moi, si j'ai ce style de liste, autant fois, plus, si je l'ai fait, si j'appuie sur mu2 fois, voir une erreur est là en bas, c' est-à-dire que le fond est notre liquide. Si nous avons directement raison. Colonne ici comme celle-ci, elle affichera une erreur et elle n'est pas défilable. Voici donc notre prochain widget, qui est List View. ListView est comme une colonne. C'est-à-dire qu'il imprime cette chose. widgets Alda de la manière verticale vers le haut vers le bas. Mais c'est aussi une chose à faire défiler. Si j'écris la vue de liste ici et que je l'enregistre. L'erreur est de voir que nous sommes capables de faire défiler nos éléments sont des widgets. Donc ListView est, encore une fois, est le même que la colonne sur leader. La principale différence est qu'il est au niveau du corail et souvenez-vous, il imprime les widgets dans la direction verticale par défaut, si vous voulez changer, vous pouvez simplement le modifier ici dans le direction de défilement et point d'accès, vous pouvez également lui donner la verticale. Mais notre Saoudien horizontal aussi. Mais le fait est que l' élément doit être différent car verticalement, vous ne pouvez pas imprimer de style de liste. De plus, vous pensez peut-être, que devrions-nous faire si vous ne souhaitez pas utiliser de données ? Colonne rigide ? Mais nous ne voulons pas utiliser le widget ListView, mais nous voulons tout de même supprimer cette erreur. Parce que toute l'application, toutes les pages de l'écran que nous utiliserons auront tellement d' éléments dans cet écran. Dans ce cas, vous pouvez simplement adapter cet élément le plus haut, c' est-à-dire celui-ci, c'est l'élément le plus haut du corps. Vous pouvez simplement l'envelopper avec un widget et ce nom de visite est une vue de défilement enfant unique. Vous vous souvenez simplement de ce nom parce qu'il change la donne. Et cela vous aidera à faire défiler le widget de colonne. Voyez que l'erreur a disparu, et pour l'instant, cette colonne fait défiler sans ajout en bas. Si vous le souhaitez, vous pouvez Google ces conditions. Quelle vue de défilement enfant unique, ce que ListView, quelle est notre colonne, si nous voulons aller plus en profondeur. Mais je vous ai donné les informations de base sur un concept de base sur la façon et le moment où nous devrions utiliser ce type de widgets. J'espère que ce module vous a plu , car vous êtes maintenant prêt à approfondir les choses dans les prochains modules. Et à la fin de ce cours, vous deviendrez un développeur complet d'applications flutter. 15. Qu'est-ce que un Etat: Ce module est très important car nous discuterons ici de ce qu'est un budget avec état. Dans les sessions V précédentes, nous sommes très habitués à indiquer moins de widget. Nous avons également créé notre propre widget sans état sous le nom de l'écran d'accueil. Mais certainement dans une application mondiale idéale V, ma fille peut être beaucoup de scénarios où nous devons utiliser un budget avec état. Avant d'entrer dans le widget d'état entièrement, vous pensez peut-être à quel est cet état ? Un état n'est donc qu'une valeur ou un élément de données dans notre application. Tout ce qui peut changer, comme un compteur, un texte, une couleur, etc., peut faire partie des données des instructions d' état de votre application. C'est comme Zoom, un état de nom d'utilisateur, c'est quoi ? Ses compétences, flotter, Firebase, elles sont toutes d'état. Quelle est la couleur de l'application ? Blue, c'est aussi un état. Le widget Stateful est simplement un widget rigide dont les données internes changeront sur certaines actions. Autrement dit, on clique sur le bouton et que la couleur du texte doit être modifiée, il devrait y avoir une sorte d'animation. Dans ce cas. Soyez rigide, c'est rafraîchir et reconstruire avec 10 nouvelles données. Cela n'est pas possible dans les régions apatrides. Donc, théoriquement, vous avez compris, mais nous travaillons définitivement dans notre code. Vous avez peut-être beaucoup de doutes. Et disons-le un par un. Je vais donc supprimer à nouveau toutes ces données. Mais avant de supprimer toutes les données, j'aimerais avoir un nouvel écran. C'est à la maison, c'est bon. C'est un état moins rigide. Mais j'aimerais supposer que le point de contact, point. Nous avons cet écran. Créons maintenant notre premier état en plein écran. Ensuite, nous devons d'abord importer du matériel comme d'habitude, puis créer une classe et un nom. Le nom que je nommerai est le contact, puis date d'échéance prolongée, la vision complète. OK. Ensuite, il manquera une machine ou quels droits. Et c'est comme ça. Il s'agit de l'état de création. widget avec état aura deux classes. L'un est l'état full div, qui étend l'état. Et le second est la classe d'état qui l'étend. Donc ici vous pouvez simplement revenir, supposons que je le nomme tech. État. Ce sera encore une fois rigide. Je vais créer cet état contextuel. Il prolongera sa date, qui portera ce nom. Et maintenant, là encore, il va manquer déjà le projet de loi. Et maintenant, vous connaissez cette ceinture. Je vais simplement retourner un échafaudage ici. C'est donc le minima nu ou squelette dub d'un widget avec état. Vous pensez peut-être : Oh non, je ne veux pas écrire ça encore et encore. Dans ce cas, il se peut que vous ayez besoin de quelques extensions. Comme ici, j'ai ces superbes extraits de flottement. Alors vous aurez certainement Dart et fertile dedans. Avec ces superbes flottements, extraits. Nous avons beaucoup de raccourcis. L'un des raccourcis consiste à créer directement un widget avec état. Je vais donc simplement supprimer toutes ces touches de raccourci S, D, F, qui est un widget d' état flottant. Et puis je cliquerai simplement sur Entrée et je vais le nommer. Contact. À voir. C'est fait. Nous n'avons rien à faire avec ce raccourci. Et quel est cet état ici ? Je vais avoir ce nom de chaîne est égal à invité. Supposons que ce nom d'invité soit un état que nous modifierons plus tard et que nous vous montrerons comment il est, comment l'écran dribble et comment il est, comment l'interface utilisateur change Gs lors de toute action que nous effectuons. Dans la prochaine vidéo, nous allons continuer à partir d'ici. Alors tendon et joie et pratique de ton mieux. Et vous. 16. La méthode setState(): Maintenant, nous avons déjà discuté pour ceux-ci et comment écrire un widget avec état. Maintenant, il est temps de le faire pratiquement et de comprendre lors de l'inversion, nous devons utiliser la méthode set state. Et quel est l' avantage de l'utiliser ? Allons-y. Nous avons cette page de contact, dot-dot-dot. Ici, dans l'échafaudage, j'aurai une barre d'application, et elle aura un type de texte. Supposons un widget avec état. OK ? Et dans le corps, avons une colonne dans les enfants. Et les enfants moins premier champ de texte Habit. Et en dessous, avons un texte de supposons bonjour, Dan, variable de nom. Et dans le point point principal, au lieu d' entrer dans l'écran d'accueil, passons à l'écran contextuel. Actualisez notre redémarrage de notre application. Et voyez, vous verrez simplement un champ de texte normal mais de texte avec ce widget de texte Hello. Maintenant, ce que je veux, c'est que chaque fois que quelque chose est changé ici, c'est sur la valeur modifiée. Je veux que cette variable de nom soit définie. Le peu importe ce qui le réécrit. OK ? Mais le fait est que si nous le faisons comme ça, il y a sans utiliser l' état défini, cela ne fonctionnera pas. Allons voir Bonjour, j' aimerais un fichier Flutter. Vous voyez, rien ne fonctionne ici. C'est solide. C'est encore, bonjour invité. Mais si nous utilisons simplement la méthode set state ici, il s'agit d'une modification des données de test et de façon dont nous aimerions placer States, SET 10 majuscules, set state, puis parenthèse. Et à l'intérieur de cela, encore une fois, la fonction IF comme celle-ci, c'est comme ça qu'il est écrit. Donc, dans cet état défini, maintenant si je change de nom est égal à valeur, puis nous commençons. Maintenant, vous vous concentrez simplement sur le texte Hello. Voyez, la première fois que ce qu'ils étaient, nous écrivons, l'interface utilisateur est en cours de reconstruction juste pour une raison, parce qu'elle indique le widget d'état complet. Maintenant, il est indiqué que c'est le nom. Nous pouvons le modifier en fonction de certaines actions ici. Cette action est un champ de texte. Pour comprendre ce qui se passe et comment l'écran se reconstruit. Nous pouvons simplement avoir une déclaration imprimée. Tout d'abord dans ce projet de loi, c'est l'impression d'écran Building. Et un ici. Valeur d'impression si vous le souhaitez. Vous pouvez également utiliser un état des jeux d'impression qui est appelé. Maintenant, lorsque je redémarre, vous voyez simplement le bâtiment de l' écran de la console de débogage, c'est-à-dire que cette fonction de facturation est appelée. C'est pourquoi nous sommes en mesure de voir ce résultat. Maintenant, je vais écrire, voir, si j'écris f, puis remet à nouveau le rebut et l' écran est en train de se reconstruire. Et vous d, d, e. Donc pendant tout ce temps le CUI était que cette fonction de facturation appelait à nouveau et que ce nom de valeur était en train d'être changé. C'est pourquoi il se reflète ici. Ainsi, grâce à la console de débogage, vous pouvez comprendre ce qui se passe sous le capot. Et la demi-lettre utilise la méthode set state pour alerter l'interface utilisateur de se reconstruire elle-même. C'est donc la différence entre un widget apatride et un widget avec état. Dans une dette rigide apatride, la dette est ce qu'elle est écrite ne peut pas être modifiée si nous le voulions via certains boutons, clics ou autre. Mais dans un widget avec état, ces valeurs peuvent être modifiées à l'aide de cette méthode set state. Dans la vidéo suivante, nous allons faire un autre exemple de «  set state tail », puis essayez simplement de rechercher et de pratiquer vous-même. 17. Widget important en action: Jusqu'à présent, nous savons comment utiliser une instruction SET et comment elle peut être utilisée pour reconstruire notre écran avec Dan new state. Mais c'est mieux si nous pratiquons certains avec d'autres exemples. Commençons et créons un nouvel écran. Un nouveau fichier sera nouveau. Supposons que ça ne devrait pas l'être. Et nous allons juste le nommer avec état. Points-points. Comme d'habitude, emballage de matériel d'importation. Alors j'ai une visite avec état de mon rendez-vous en plein écran. Je viens de le nommer comme ça. Ensuite, prenez l'échafaudage. Et comme d'habitude, dans ce titre, j'ai un texte de date, complètement rigide dans le corps. Vous, dans le corps. Nous allons avoir un widget centré et un enfant. Disons un widget de colonne. Se trouve maintenant dans un widget avec état. Il y a certainement un état où je vais créer une liste de chaînes. Je vais le nommer. Les noms sont égaux à cela. Et j'apprends Bill, Mark. D'accord ? Et j'aurai un NSdate de int I est égal à 0. Vous pensez peut-être, qu'est-ce que c'est ? C'est donc juste 0 car l' index d'une liste commence par 0. Maintenant, ici, il y aura d'abord des textes, un champ de texte et pour inviter, ma moyenne est alors les noms. Et moi, donc ça va ajouter le tout début, il montrera IL-1. Et pour cela, nous devons passer à mon point point moyen, qui est mon état plein écran, puis redémarrer. Voyons voir. Voyez mon nom et mon nom est 11. D'accord ? Et aussi la colonne que j'utiliserai un centre de points d'alignement principal de X principal qui est de haut en bas, il devrait être centré. D'accord ? Maintenant, ce que je veux, c'est que je veux lever des boutons dans la même colonne. Surélevé signifie que je suis désolé, je veux dire bouton surélevé. Et le premier bouton sera le suivant. Et le second a été élevé, mais nous y retournerons. Bon, voyons voir. OK. Ce que je veux, c'est que lorsque je clique sur ce bouton Suivant, je m'appelle Elaine, je m'appelle Bill. C'est que H devrait faire un cercle ou il devrait passer par cette liste de noms pour cela. Sur site, je dois modifier ces données. Je l'ai fait si j'ai 0 ans. Il devrait en être un. Si je clique sur le bouton Suivant, jusqu'à présent, je vais juste écrire l'état défini et puis je plus, plus. Voyons voir. Je vais cliquer sur ce prochain C, Mon nom est intégré. Si je clique sur Mon nom est Mark. De même, si je veux revenir en arrière, je vais juste définir l'état I moins moins. Ici. Si je clique sur Suivant, il s'agira de Bill. En fait, nous pouvons y retourner. Il apprendra encore une fois. Mais le fait est que si l'utilisateur clique plusieurs fois, il affichera une lettre C. Parce que je ne suis que l'Atlantide seulement 0, 1 dette est trois. Mais si j'y vais plus de deux, cela commencera à montrer une erreur trop loin que nous devons faire une sorte de conditions ici sur site, comme l'état défini. Si je veux juste le dire ici. Si je suis inférieur à la longueur du point de noms, alors seul l'exécution a fait ce truc d'état défini. OK. Redémarrons maintenant et vérifions ce qui va se passer. 012 va à traiter ne doit pas exécuter 01 mark. Et encore une fois, je dois écrire moins un ici, puis définitivement. Refaisons-le. Eland Bill, tu vois, maintenant il ne montre aucune erreur. Et de même, revenez en arrière. Lorsque vous y retournez, nous devons vérifier si je ne suis pas égal à 0, dix moins si c'est déjà 0, alors nous ne pouvons pas aller plus loin. Maintenant, essayons. Si j'y vais 123, d'accord ? Maintenant, si j'adopte le projet de loi 11, et maintenant si j' essaie de revenir en arrière aussi, cela ne fonctionnera pas parce que nous avons notre condition qui veillera à ce que cet écran ne se bloque pas. Il s'agit donc d'un exemple très basique de l'état défini. Un autre exemple que vous pouvez avoir est supposer que mort est une couleur, cette couleur est rouge. D'accord ? Il s'agit d'un seul état. Maintenant, je vais avoir un bouton d'action flottant. Bouton d'action flottant que j'aime. Dans cet enfant, il aura une icône. Je peux commencer. Voyons voir. Je ne sais pas quelle est la lentille couleur. Jetons un coup d'œil. Vous voyez, d'accord, j'ai cette icône ici. Ce qu'ils veulent, c'est que lorsque je clique sur cette icône, sa couleur devrait changer. Maintenant. J'ai cette couleur arrière-plan et cette couleur d'arrière-plan sera l'état rouge. Bon, donc au tout début, l'état est rouge. Mais je veux que lorsque je clique sur ce bouton, cet état devrait être changé. Donc, lorsque je clique sur ce bouton, définissez l'état, couleur est égale à la couleur Amber. Je vous montre simplement des exemples différents pour que vous soyez plus aise avec les données des jeux de données pour comprendre ce qu'elles font. Maintenant, je clique dessus, vois un changement de couleur en Ambre. Il s'agit donc de l'utilisation de la date définie, et c'est ainsi qu'un widget avec état fonctionne. Il suffit de modifier ces données et de reconstruire l'écran Statut avec de nouvelles données d'endettement, comme cela. Dans la vidéo suivante, nous discuterons donc de quelques-uns des concepts restants de ce module. Et après cela, nous sommes heureux d'aborder les nouveaux concepts plus plats. Merci. 18. Qu'est-ce que la fonction initState(): Donc maintenant, nous avons déjà travaillé sur un widget avec état et comment changer l'état à l'aide de l' instruction SET et get est une autre méthode qui est très importante dans un widget avec état, appelé état d'initialisation. Qu'y a-t-il dans chaque état ? C'est une fonction qui est déjà morte dans chaque widget d' état que nous n'avons qu'à écrire dans. Voyez ici, je peux obtenir cette aide. Donc, si je clique sur Entrée, il y a cette fonction dans son état et ce qu'elle fait lorsque cet écran, notre van, ce widget avec état est en cours de construction pour la toute première chose. C'est ce qu'on appelle. Cela signifie donc qu'avant cette fonction de facture, avant l'interface utilisateur, cela dans son état sera appelé. Donc, si vous voulez voir ce que je dis, imprimons. C'est le cerveau. Ici. État d'initialisation et fonction Bell. Imprimons la fonction Build. Redémarrons maintenant l'application. Dans la console de débogage. Vous verrez d'abord que l'état d'initialisation a été appelé, et deuxièmement, cette fonction de facturation a été appelée. C'est donc très puissant et très utile lorsque nous construisons une application réelle. Vous pensez peut-être, d'accord, mais à quoi sert cet état d'initialisation ? Ce que nous faisons habituellement, c'est que nous attribuons une certaine valeur. Nous attribuons une certaine valeur à nos variables, variables d' instance, vous pouvez dire à ces données, supposons qu' il s'agisse, par exemple, nom de chaîne et d'une variable. Maintenant, ces données arrivent. Supposons qu'à partir de l' écran précédent, utilisez son nom. Ici. Je vais juste dire ce nom .UserID, les deux. Jeff Bezos. Maintenant, en état d'initialisation, j'aimerais attribuer cette valeur. Il s'agit des données qui proviennent de l'écran précédent vers cet écran. Nous écrivons simplement ce nom de point est égal au nom d'utilisateur du point de widget. Et puis dans le texte, mais j'aimerais montrer ce nom d'utilisateur. Voyons voir, est-ce que ça marche ou non ? Voir. Ce que nous avons fait, c'est que les données provenaient l'écran précédent à l' écran, par exemple. Et ici, vous attribuez cette valeur à une variable vide, qui était nulle auparavant. Mais avant de créer l'écran, cette valeur a été attribuée à cette variable en utilisant l'état d'initialisation. Depuis, parce que c'est la première fonction qui est appelée lorsque ce widget a été construit. Il y en a, on peut dire quand ce budget s'est construit. Maintenant, supposons, j'espère que vous vous souvenez de l'état conservateur précédent. Si je clique dessus , cette fonction de facture sera à nouveau appelée. Mais la fonction d'état d'initialisation n' est appelée qu'une seule fois. Voyez donc, la fonction de facturation est de nouveau appelée car la page est en cours d'actualisation. Mais ce truc d'initialisation, von, nous ne pouvons pas l'appeler à nouveau, c'est déjà tout à fait cela sur Lee enroulé une fois ADH que vous devez supprimer cet écran ou aller à la différence peut totalement différent deux pages puis revenez sur cette page. C'est la livrée « on ». Ici, nous attribuons simplement cette valeur du widget parent à ce widget. Ces choses que vous pouvez voir. Il y a beaucoup de choses comme les flux, textes et le contrôle. La valeur des cotisations est donc les éléments que nous voulons initialiser seront utilisés ou VK peut l' initialiser à l'état d'initialisation. Donc, en ce moment, vous pensez peut-être à ce que je dis, mais plus tard, lorsque nous utilisons base de données Firebase ou que nous devons initialiser quelque chose. C'est supposons que certaines requêtes HTTP. Ces choses, nous pouvons le faire dans l'état initial. Cela signifie que tout juste mort est initialisé cette chose dès que cette page est en cours de construction. J'espère donc que vous avez compris le concept de budgets avec état et comment les pages sont construites. Cet état initial est très important. Mais pour l'instant, si vous avez compris, à moins que le concept soit également, c'est suffisant. Nous pouvons passer à d' autres sujets. Et Q 19. Comprendre le cycle de vie Widget: Dans la dernière vidéo, V, puis comment l' état d'initialisation fonctionne Vogue. De même, nous avons soit des fonctions, soit d'autres choses. Tout widget avec état, appelé cycle de vie du budget complet de l'état. Donc DRF, peu de fonctions que nous pouvons utiliser dans un widget avec état. Le premier est l'état d'initialisation, dont nous avons déjà discuté. agit de la première méthode appelée lors de la création du widget. Il est appelé une seule fois. Il est généralement utilisé pour initialiser des propriétés qui reposent sur ces widgets qui font partie de cette arborescence. modificateurs modifient les flux en indice. Tout autre objet susceptible de modifier la date de ce widget. Nous en avons donc discuté. Ensuite, il y a les dépendances de changement profond. Cette méthode est appelée immédiatement après dans chaque état. Et lorsque la dépendance de l' objet de l'état de mort change via un widget hérité. Vous pouvez donc simplement voir que cela a changé les dépendances. Je le ferai simplement, je vais simplement écrire des imprimés. Est-ce que les dépendances ont changé. Je vais redémarrer l'application. Et ici, vous verrez le premier dans son état sera là. Ensuite, ils changent les dépendances, puis double fonction. Cette méthode est rarement nécessaire ou utilisée. quais du flottement suggèrent également qu'il pourrait être utile si vous avez besoin de faire des appels à distance. Mais lorsque n widget hérité est mis à jour, ce concept n'est pas si important. J'ai construit beaucoup d' années et ce n'est pas important. Troisièmement, c'est la fonction cloche. Cette méthode est appelée chaque fois que nous avons fait cela reconstruit, elle est obligatoire et doit renvoyer un widget. Il s'agit donc de la fonction cloche. Nous l'avons déjà fait, nous savons déjà qu'il sera appelé à cette 30 place le premier dans son état. Deuxièmement, modifiez les dépendances. Et troisièmement, la fonction des jours a mis à jour la région. Il s'agit également d'une fonction donnée par le widget avec état. C'est ce qu'on appelle les changements glaciaux des parents et doit être reconstruit discrètement. C'est ce widget. Ce que je veux dire, c'est que supposons ici que ces données proviennent de ce parent glacial, elles proviennent de l'écran précédent. Et voici une mise à jour. Cette chose est appelée si ces points, supposons que le nom ne soit pas égal à 0, nom d'utilisateur de point rigide. Ou désolé, vous pouvez simplement dire ce widget point nom d'utilisateur, marque. Ont-ils changé ? Nous ne pouvons donc pas le montrer maintenant, mais il faut comprendre le concept. Supposons un cas typique où un parent transmet variable aux enfants via le constructeur, ce que nous avons déjà fait. Le parent transmet certaines données via le constructeur. Et si cela, si les données du pad et des widgets changent , cette fonction se souviendra également et montrera les modifications effectuées. Donc, pour la cause qui fonctionnera après cela, donc pas besoin de lire l'état défini par vous-même. Cette fonction n'est pas non plus très utilisée. Mais lorsque nous apprenons des widgets avec état, vous devriez au moins le savoir. Ces termes existent également. État de 50. Nous savons déjà qu'il s' agit d'un roi de l'État. Et après cela, la fonction de facturation est à nouveau appelée et l'interface utilisateur est construite. Ce n'est pas nouveau. La sixième est désactivée. Cette fonction est appelée lorsque l'objet est retiré de l'arborescence. C'est encore une fois rarement utilisé. Cette méthode existe essentiellement : les objets de données de coût peuvent être supprimés de 1 à un autre et peuvent être supprimés temporairement. Je vais juste vous montrer que cela existe également désactivé comme ça. Lorsque vous venez d'imprimer, désactivez. Et une finale et la dernière est éliminée. C'est très important. Cette méthode est appelée lorsque cet objet, c' est-à-dire lorsque ce widget avec état est supprimé définitivement de l' arborescence. Ici, nous devrions libérer les sources d'énergie retenues par l'objet, comme arrêter n'importe quelle mission. Un exemple est que Wendy's my TED est appelé vile en utilisant le positionnement du poussoir du navigateur. La prochaine session seulement nous parlerons de navigation. Il s'agit donc d'une page à une autre. Si nous y allons, alors la page précédente devrait être éliminée correctement. Il ne devrait y avoir aucune fuite de mémoire. Donc, dans une application réelle, il est très important d'utiliser ces mentor Dispose. Ici, nous arrêterons certaines animations, nos appels de base de données ou autres, ce qui n'est pas nécessaire ultérieurement. Donc, ces widgets laïques, libres et avec état de la vie adulte d'abord est l'état d'initialisation, abandonnant les dépendances. La troisième est la fonction de construction. Plus de 40, si nous le faisons, si leur widget parent modifie leurs variables ici. Alors a mis à jour vd, cet appel, nous comparons cela aux valeurs. Et puis le dernier est la désactivation, ce qui n'est pas non plus très utile, mais cette publication est beaucoup utilisée. Beaucoup. Vous devez donc vous assurer que vous connaissez tous ces termes et lorsque nous les utilisons plus tard, vous n'êtes pas confus sur ce que c'est ou est-ce quelque chose de nouveau ? Parce qu'au moins ce concept que nous connaissons plus tard, nous apprendrons à l'utiliser. Merci. 20. Concept de pile: Dans ce module, nous allons commencer un nouveau sujet qui est la navigation. La navigation est un élément clé de l' expérience utilisateur pour n'importe quelle application mobile. Parce que les utilisateurs navigueront constamment constamment entre différents écrans. Il est impossible que vous construisiez une application à part entière et vous n'ayez qu'un seul écran dedans. Si vous avez vu si vous voyez un site de commerce électronique, DNR, commandez ma commande, mon panier, puis la page d'accueil, puis la page d'offre. Il y a beaucoup d' écrans de dette. Nous devons savoir comment naviguer correctement. Maintenant, papa est malade concept de flottement de navigation, qui est pile. Si vous venez d'un langage de programmation R, Si vous avez terminé votre diplôme, alors définitivement, vous savez ce qu'est une pile ? Il suffit de pousser et de dégager des éléments. Vous pouvez donc simplement voir ce diagramme et le comprendre. Supposons que ce n'est pas une pile vide. Ensuite, un écran lorsque l'application s'ouvre, puis l'écran d'accueil est poussé vers la pile. Ensuite, à partir de l'écran d'accueil, si nous accédons à l'écran contextuel, c'est-à-dire si nous passons simplement aux contextes propres et avons la possibilité de revenir à l'écran d'accueil. Ensuite, cet écran contextuel va au-delà école à domicile dans ce cas comme dans la pile uniquement. C'est-à-dire qu'il est au-dessus l' un à l'autre. Vous pouvez donc simplement dire qu'il suit la règle du dernier entré premier sorti, c' est-à-dire le lifo et non le premier entré, premier sorti. Donc, si nous affichons l' écran des contextes et revenons à nouveau sur l'écran d'accueil, ce contact vert sera supprimé de la pile. Et puis encore une fois la pile d'indust. L'écran d'accueil sera présent uniquement, ce qui sera visible par l'utilisateur final. Il s'agit donc de la 2D, c'est le concept derrière la navigation en Floride. Vous devez comprendre parce que dans votre esprit, vous devriez visualiser comment les pages ou le fonctionnement de votre code. Commençons alors. Si vous connaissez le concept, commençons par une navigation de base. Faites ressortir cet éditeur de texte. Et ces pages que je ne veux pas, je vais simplement créer une nouvelle page. Et le nom est le premier point d'écran. Ensuite, j'importerai du matériel. Il sera alors apatride. Je ne veux pas modifier les données. Ce sera le premier écran. Il s'agira d'un échafaudage dans le bar de l'AB. Voyons le texte du titre du premier écran. Maintenant, il suffit d'attribuer ce premier écran en point de domaine. Actualisez maintenant votre application et voyons. Le premier roi est mort. Dans la prochaine vidéo, nous découvrirons le concept de Bush et Bob. Voici comment envoyer cette pile, un écran à l'intérieur de la pile et comment la supprimer. Et revenez à nouveau à l'écran précédent. 21. Méthode poussoir et pop: Continuons à travailler sur la partie navigation. Donc, si nous avons ce premier écran dans le corps, avons un widget central. Et puis enfant du bouton surélevé. Et dx sera égal au deuxième écran. OK ? Bon, nous avons ce bouton. Maintenant. Nous devons également créer un deuxième écran. Je vais donc créer un nouveau deuxième écran de fichier, mais Dart. Encore une fois, je dois faire ce matériel d'importation. Ayez ensuite un widget sans état appelé secondes screen. Nous, comme c'est un écran, donc c'est vraiment un échafaudage. Dans cette partie, nous aurons un titre. C'est très répétitif, je sais, mais il faut le pratiquer. Il faut s'y habituer tellement que vous en savez tout. OK ? Nous avons ce deuxième écran, d'accord ? Maintenant, nous devons naviguer vers, vous pensez peut-être, d'accord, mais comment naviguer ? Pour naviguer, il existe une méthode appelée Push and Push Placement. C'est-à-dire que d'abord, c'est pousser. C'est-à-dire que nous allons simplement pousser l' écran suivant au-dessus de l'écran. C'est-à-dire que nous allons pousser le deuxième écran à l'intérieur de la pile. Mais la première peau va oser la pile. Ce que je veux dire, c'est que nous devons utiliser le push, mais la syntaxe dont vous devez vous souvenir est abord le point de navigation, puis l'ère CD, tant d'options. Remplacement Push, Pop, Push Nous allons donc utiliser Push. Ensuite, vous verrez qu'il accepte deux choses. Le premier est un contexte et le second est un itinéraire. Cet itinéraire, nous devons m'envoyer widget de route de la page TDL comme celui-ci. Voyez, c'est un peu différent, mais c'est un code que vous devez simplement apprendre ou simplement mémoriser par cœur, c'est tout. Maintenant, ce Builder est une fonction comme celle-ci, qui sera ici contextuelle. Et puis cette fonction revient. Ainsi, le nom d'écran atteint dans notre cas est le deuxième écran. Il s'agit donc de ce code nécessaire pour naviguer d' un écran à un autre. En dehors de ce deuxième écran, tout ce que vous devez simplement vous souvenir, c'est la syntaxe. Et la poussée par point du navigateur prend deux paramètres. L'un est contextuel et le second est l'itinéraire de la page matérielle. page Material it out accepte un paramètre Builder, qui est une fonction qui renvoie ce nom d'écran. C'est un widget tenseur d'identité. Vous pouvez simplement dire : Voyons voir, est-ce que ça marche ? Et rappelez-vous simplement que nous utilisons ici et je vais juste écrire la méthode push car il y a une différence entre le remplacement push et push. Je cliquerai simplement sur aller au deuxième écran et voir le deuxième écran est là. C'est donc la première fois que nous utilisons plusieurs écrans d' un écran à l'autre. Et maintenant, vous pouvez voir ici ce bouton fléché. Imaginez donc qu'à cause de cette poussée, nous sommes sur le point de revenir à l'écran précédent. Et si vous pouvez visualiser une pile, cela signifie qu'au-dessus du premier écran, deuxième écran était assis. Et puis on vient de le retirer. Et vous pensez peut-être, d'accord, j'ai compris ce qu'est la poussée, mais qu'est-ce que le remplacement de poussée ? remplacement de poussée efface donc cette pile. Cela signifie que nous ne pouvons pas revenir à cet écran précédent. Une fois que nous accédons à la deuxième date écran, il n'y a pas de flèche arrière. Tous les écrans précédents seront supprimés. C'est donc le navigateur. Remplacement Push. Tout simplement. Après cela, tout sera identique du contexte à l'itinéraire de la page matérielle et tout. Seule la différence sera la syntaxe de remplacement poussée. Maintenant, encore une fois, sortez l'émulateur et essayez-le vous-même. Lorsque je clique sur Aller au deuxième écran, voyez qu'il n'y a pas de bouton flèche. Nous ne pouvons pas revenir d'ici. Vous pouvez simplement le comprendre avec un exemple de Facebook. Tout d'abord, cet écran de connexion apparaît lorsque nous saisissons un nom d'utilisateur et un mot de passe. Après cela, l'utilisateur est, et si c'est correct, l'utilisateur est dirigé vers son écran de profil. Et depuis l'écran de profil de dette, il ne peut pas revenir à l'écran de connexion avant et à moins de cliquer sur le bouton de déconnexion. Il s'agit donc d'un très bon exemple typique de quand utiliser push et quand utiliser le remplacement par poussée. Maintenant, nous avons compris et nous avons appris à pousser des pages. Mais il existe un autre concept de popping pages. que nous allons faire ici dans ce deuxième écran. Juste dans leur corps. Une fois encore. Créez le centre droit, puis l'enfant. Puis bouton surélevé. Voici que j'ai fait quelque chose de mal. Dans le bouton surélevé. viens de voir quand l' enfant vous le fera, j'écrirai ici et j'y retournerai. Maintenant, nous allons comprendre le concept de pop, qui signifie simplement supprimer cette page de l' écran et moins dans les taxes navigateur dot push. Maintenant, voici simplement pop simple et il accepte le contexte d'étape. C'est ça. Rien de plus. Et pour faire apparaître, rappelez-vous simplement ici qu'il est poussé, pas de remplacement poussé, sinon votre application se bloquera. Vous allez simplement sortir directement de votre application. OK ? Maintenant, si je clique sur Aller au deuxième écran, voyez que nous avons ce bouton Retourner et quand je clique dessus, je reviendrai à nouveau, reviendrai au premier écran. Maintenant, vous pensez peut-être que ce routage fait aussi la même chose. Il appelle également, par défaut, la fonction Pop de navigateur. Les deux font la même chose, mais ici nous écrivons délibérément le code pour revenir en arrière. C'est ça. Et ce point pop de navigateur supprime cette page la plus haute de la pile. Il peut donc y avoir moins de 23 pages, mais elle ne supprime que cette première page. C'est ça. Et si vous voulez partir de cette deuxième page, vous pouvez également revenir en arrière. Bien, deux pages différentes. Je vais juste naviguer dans l'école, mais je vais pousser. Ensuite, ici, l' itinéraire de la page matérielle, puis simplement les contextes. J'aimerais maintenant accéder à à cette page de contact. Supposons la page de contact ici. OK ? Il s'agit également d'une poussée. Rappelez-vous maintenant ce qui se passe sur la balise d'index laitier. Il ne s'agit que d'abord d'obtenir un widget, en ce moment. Ensuite, quand je clique sur aller au deuxième écran, technologie s'additionne très en dessous de la dette est le premier écran au-dessus, puis le deuxième écran. Si j'y vais, désolé, j'ai juste oublié de changer de nom. Si je vais à l'écran de contact, voyez maintenant les contextes canne sont là et maintenant dans le répertoire de balises dest là et maintenant dans le répertoire de balises dest écrans un au-dessus et en dessous. Donc, quand je reviendrai ici, le deuxième écran viendra et l'écran des contextes sortira de la pile. Et maintenant, si je reviens ici, alors ce premier écran est là. Mais supposons qu'à partir de ce deuxième écran, j'utiliserai le remplacement push. Maintenant, que va-t-il se passer ? C'est très intéressant à voir depuis le premier écran, lorsque je passe au deuxième écran, nous avons deux écrans dans la pile. Mais si je clique sur Aller au contact et qu'il utilise le remplacement push, il supprimera tous les écrans. Il s'agit du deuxième écran ainsi que du premier écran. Maintenant, si je vais à Contact, voyez, il est en train d'être supprimé. Maintenant, j'ai utilisé le remplacement push ici. C'est pourquoi nous ne devrions pas pouvoir l'utiliser. Vous devez le répéter, parfois simplement un peu que je viens, c'est très bien. Mais vous devez comprendre que ce remplacement push supprime toute la pile, toutes les visites de cette pile. Cela peut se produire en raison d' une mise en cache normale ou quelque chose comme ça. Mais jusqu'à ce que vous n'ayez pas assez de familiarité, vous avez compris ce concept par cœur. C'est ce qui compte. Dans les prochaines vidéos, nous discuterons de la navigation, mode en profondeur et de l'eau, du mode en profondeur et de l'eau, des autres fonctions plutôt que de simplement pousser pop et de toutes les autres choses, qui seront discutées dans un tandis que. 22. Comprendre la route nommé: Jusqu'à présent, nous avons appris à naviguer à l'aide de la méthode push. Mais il existe une autre façon de naviguer consiste à utiliser des itinéraires nommés. Supposons maintenant que si vous devez naviguer vers le même écran dans de nombreuses parties de votre application, l'approche précédente peut entraîner une duplication de code. La solution consiste à définir un nom, un itinéraire et à utiliser ce nom pour la navigation où vous le souhaitez. Et la syntaxe est également prête, simple, pas comme avant, nous devons utiliser itinéraire de la page matérielle, puis constructeur et beaucoup de choses plus tôt, c' était beaucoup plus de code de chaudière, codage de plaque de chaudière et tout. Mais pour le moment, la syntaxe est très facile. Ainsi, les étapes sont. abord, nous devons créer deux écrans, ce que nous avons déjà fait, d'accord ? Et le second est défini les itinéraires en fournissant des propriétés supplémentaires dans le widget ADL. Nous devons donc maintenant accéder à notre page principale de points. Ici. Nous devons utiliser les propriétés des routes ici comme celle-ci, puis des accolades bouclées. C'est donc aussi une propriété des itinéraires de laboratoire de matériaux, qui vous aideront certainement dans votre navigation et votre code propre. Vous devez donc d'abord déterminer la bonne chaîne de tâches. C'est ce qu'il faut appeler. C'est le nom de l'itinéraire. Mais ici, je viens de donner une barre oblique, ce qui signifie la page d'accueil. Et c'est une fonction comme avant. Et ici, je vais envoyer l'écran d'accueil. Et ainsi, le deuxième itinéraire vous permet d'avoir un contact. Vous pouvez avoir ce contact. Et là encore, cette fonction et ces contextes s'affichent. Lorsque nous utilisons des itinéraires, nous ne devrions pas utiliser la propriété domiciliaire. Nous devrions utiliser la route initiale. Et ici, quelle est la route initiale c'est cette barre oblique inverse. Je dois donc commenter cette maison, puis redémarrer notre application. Supposons que l'itinéraire initial soit l'écran d'accueil ou non. L'itinéraire initial définit l'itinéraire par lequel l'application doit commencer. Donc, par le nom seul, vous comprendrez. Cela prend un peu de temps dans mon système. Oui. Mais c'est fini. Disons que l' école initiale à domicile est maintenant là. Et je vais juste envoyer le premier écran 2. Voyons voir. Maintenant, comment naviguer vers le deuxième écran en utilisant ce nom, qui est navigué dans la couche de propriétés Push name. Nous, nous utilisons le remplacement des points push and push du navigateur. Mais maintenant, nous pouvons utiliser le remplacement Pushed Nim et Pushed Nim. Allons au premier écran. Ici. Voyez que nous avons notre méthode push, que je commenterai et j' aurai nommé mon 10. Et la syntaxe est très simple. Push de point du navigateur nommé, puis contextes et nom de leur itinéraire. Et leur nom sera un contact oblique. Je vais l'envoyer pour aller à Contact. Supposons. Vous pouvez donc voir que la syntaxe est très simple. C'est le nom du navigateur Dot Push. Ici, nous n'avons pas besoin d'utiliser une page de matériel, un itinéraire et tout. Nous pouvons simplement écrire le nom de l'itinéraire et cela nous aidera à naviguer. Allons à Contact et voyons les pages de contact ici. De même, nous avons poussé. Nom de remplacement Push. Il fait le même travail que le remplacement poussé sur les différences de leader. Ici, nous utilisons un nom de sécheresse. Et il suffit de cliquer et de voir qu'il n'y a pas de bouton de retour. Nous ne pouvons pas revenir ici aussi pour revenir en arrière. Ou si vous l'avez fait, si vous voulez créer un bouton , nous pouvons simplement utiliser navigateur dot pop, comme auparavant. La seule différence est que nous utilisons des itinéraires de noms pour nous vers la Navy pour la navigation. Bush est nommé. Et de même dans la réunion, mais que vous pouvez écrire autant de noms que vous voulez. Supposons alors la deuxième page. Contexte. Et la deuxième page. Secondes. Bien. D'accord ? Et nous allons juste dire que c'est le deuxième écran. D'accord ? C'est donc la façon d'utiliser les itinéraires. Le fait est que le seul inconvénient ici est que lorsque nous naviguons, frais doivent se souvenir correctement de ce nom. Supposons qu'on l'écrive. Supposons que le point de contact S soit des contextes, alors il affiche une erreur. Et définitivement, c'est très difficile pour nous de nous souvenir de l'orthographe. Cette barre oblique inverse est correcte, chaque fois loin devient une petite solution plus facile. Et c'est l'utilisation d'un modificateur statique pour appeler les routes de dénomination. Cela signifie que si nous avons utilisé un nom, si vous commencez une méthode pour naviguer d' un endroit à un autre dans le concept de dénomination, nous devons nous souvenir la chaîne que nous avons fournie à son nom. Ce n'est pas forcément toujours de la dette. Nous nous souvenons du nom lorsqu'il y a plusieurs écrans dans une application. Nous créons donc un type de données de chaîne avec le modificateur statique, sorte que nous puissions l' attribuer directement, l' appelant via sa classe, ce qui signifie simplement que nous utilisons une variable tactique . dans notre état moins rigide et lui donner un nom comme cette maison, nous allons simplement écrire de l'statique. ficelle. Id est égal à la maison comme ça. D'accord ? Et puis dans le fichier main.js, nous pouvons simplement écrire pour la clé principale. Nous pouvons écrire 0 identifiant de point d'écran. Et cela aura un contexte d'écran d'accueil. Simple. Il devient donc beaucoup plus propre et plus agréable. Et vous le feriez certainement, vous pouvez vous souvenir de ce nom de classe, du moins sur cet écran d'accueil. C'est beaucoup plus facile à retenir que la corde. De même, si vous allez au deuxième écran, nous pouvons simplement écrire, prendre l'ID de chaîne est égal à. Et puis je peux écrire un deuxième écran comme ça et aller au point principal. Ici, je n'ai qu'à écrire un deuxième écran. Et comme c'est une variable statique, nous pouvons donc l'appeler directement sans créer d'objet. C'est ainsi que ça se passe. Comme vous pouvez le voir ci-dessus, nous avons utilisé un modificateur statique, qui type de données de chaîne à l'écran et lui attribue une variable de chaîne. La prochaine chose, c' est que nous avons notre Dame. Ensuite, ces ID de chaîne, c'est-à-dire les variables statiques des routes. Il est maintenant temps de l'appeler, car nous pouvons y accéder directement facilement et naviguer d' une page à une autre en mémorisant ce ClassName. Et maintenant, nous n'avons plus besoin de nous souvenir de cette corde. Et je vais encore et encore, ce que je veux dire par là. Encore une fois dans ce contexte, comme avant. ID de chaîne statique X est égal à contact. Ensuite, il suffit d' écrire l'ID de point de contact. Et si vous pouvez changer cela aussi. Maintenant, lorsque je passe au premier écran ici, je n'ai pas à écrire cette chaîne comme ce contact. Je peux simplement écrire contact et esthétique. Donc, méthode tactique, je peux simplement appeler l'ID comme ça. Voyez la différence. C'est une façon très claire d'écrire notre code et de gérer notre code. Je peux simplement dire illégal de contacter comme ça. Et tu vois, encore une fois, ça marche. n'y a pas d'erreur. Si nous utilisons cette approche. C'est à vous de choisir celui que vous préférez. Si vous regardez beaucoup de vidéos et de tutoriels, vous pouvez également rencontrer cette méthode, car c'est une préférence personnelle. Quoi que vous vouliez, vous pouvez le faire, Il n'est pas toujours nécessaire d'utiliser cette tactique, mais je vais certainement vous suggérer parce que lorsque vous avez beaucoup de routes, il est impossible pour vous de écrivez correctement chaque chaîne. C'est ça. Dans la vidéo suivante, nous en apprendrons plus sur la façon de transmettre des données entre deux écrans et de les afficher dans l'interface utilisateur. 23. Passer des données via les constructeurs: Jusqu'à présent, nous avons compris comment naviguer d'un écran à l' autre en utilisant une méthode normale et en utilisant une méthode nommée. Maintenant, c'est l'heure. Nous comprenons comment transmettre certaines données tout en naviguant définitivement dans une application. Et il y aura des scénarios. Ensuite, nous devons transmettre une donnée de la première vers le deuxième écran. Supposons également qu'il y une situation comme dans le deuxième écran, nous avons besoin du nom d'utilisateur de cet utilisateur, c'est le cas net. Nous ne voulons plus avoir une base de données qui appelle le deuxième écran, car elle prendra beaucoup de temps et prendra beaucoup de ressources. Il est préférable que si nous avons déjà les données dans le premier écran, nous transmettions les données au deuxième écran à ce constructeur. Comme nous le savons déjà, il existe deux types de constructeurs. Constructeur paramétré, constructeur de noms. Donc, pour accepter les données, nous devons d' abord créer une variable d'instance dans l'écran sur lequel nous naviguons. C'est un deuxième écran que vous pouvez voir et créer un constructeur dans cet esprit, qui accepte et attribue la valeur à la variable d' instance. Ce que je veux dire par là, c'est qu'on y va. Supposons que nous ayons cette crème contextuelle. Je vais simplement prendre ce deuxième écran. Ici. Tout d'abord, j'aurai une variable d'instance de nom de chaîne. Et puis je dois déclarer. J'ai mentionné un constructeur qui exceptera cette valeur et l'attribuera à Bouddha, nommé à cette variable. Mais définitivement, nous n'avons fait que ce constructeur. Je vais simplement supprimer celui-ci et créer un nouveau comme avant. Et il suffit d'écrire ce nom de point. OK ? Cette section est terminée. Maintenant dans le principal. Jack définitivement. Ici. Il est demandé que nous devions envoyer de la valeur. C'est donc mieux lorsque nous utilisons, car les fournisseurs utilisent des itinéraires nommés maintenant, ce n'est pas pour envoyer de valeur. Nous en discuterons également. Mais pour l'instant, je vais simplement commenter ce deuxième écran. Et maintenant, dans le premier écran, je vais utiliser la méthode push, pas la poussée nommée mon tour. Et vous pouvez voir dans cette méthode push, le deuxième écran en ajoute parce qu'il dit qu'il doit y avoir un argument inséré sur le deuxième écran qui accepte un argument. Je vais donc simplement l'envoyer parce qu' il s'agit d'un argument positionnel non d'un constructeur nommé, c'est une partitionnelle qui est la 0e position. Je vais simplement dire nom, nom, enfants. Maintenant, dans le deuxième écran, en état d'initialisation, je suis désolé, c'est une région apatride. Nous avons donc ce bouton pour contacter. Ici. Je vais simplement imprimer la valeur, qui est le nom. Et je vais l'écrire. Bon, voyons maintenant, est-ce que ça marche ? Sommes-nous en mesure d' envoyer des données d'un écran à un autre ? Découvrons-le. Apportez votre émulateur. Maintenant, allez au contact pour que ce soit bon pendant quelques secondes. J'espère que vous avez compris. Alors, quand je pars, nous avons maintenant ce bouton imprimé. Et quand je clique sur ce bouton, voir Bill Gates sur l'écran d'impression, nous pouvons voir cette valeur Bill Gates, qui a été envoyée depuis le premier écran. Donc, enfin, v sachez comment naviguer avec le paramètre de données. Mais maintenant, ce n'était qu'un argument positionnel. Même chose que lorsque nous transmettons des données à un constructeur de noms. Que ce n'est pas une chose très difficile , car nous l'avons encore refait. Tout simplement ce que vous devez faire. Allez sur le deuxième écran et faites-le simplement dans le constructeur de nom. Et vous pouvez donner requis car ce n'est pas un élément nul dans une valeur libérale. Maintenant, dans le premier écran, vous n'aurez plus à faire. C'est un paramètre de nom que de devoir écrire le nom qui est le support tel que nous l'avons mentionné ici. Et maintenant, je vais le nommer Elon Musk. Maintenant encore, vérifiez s'il fonctionne également avec le constructeur de noms. Lorsque je passe au deuxième écran et que je clique sur Imprimer, voir Elon Musk. C'était donc cette différence et depuis le début des sessions de points, vous devez savoir que la différence entre les paramètres du constructeur partitionnel et les paramètres nom a été mise en évidence à ce sujet encore et encore parce que c'est un concept très central. Maintenant, cette chose est morte. Au tout début, je supprime cette route nommée car elle affichait des ajouts. Tout simplement parce que si vous avez un itinéraire de nom et que vous souhaitez transmettre ces données, nous pouvons également envoyer des paramètres val1 naviguant, mais nous ajoutons simplement un argument à une carte en appuyant sur l'écran suivant. Vous pouvez voir ici avec l'exemple du navigateur point push contextes nommés, ID de point de contact. Ensuite, il s'agit d'un nouveau paramètre appelé arguments et il accepte la carte. Ici, la clé est nom et une valeur que j'ai donnée a une chaîne. Mais vous pouvez également avoir différents objets ou modèles personnalisés à l'avenir. Mais pour comprendre ce concept, vous devez voir comment cela se passe en faisant sortir votre éditeur. Maintenant, dans le premier écran, j'ai rempli Go and check in domain dot, dot. OK ? Et comme nous utilisons des routes nommées, je dois supprimer ce constructeur. Autrement dit, nous ne pouvons pas accepter de valeur comme celle-ci. Pour cela, quelles ont été les étapes ? L'étape 1 était ? Ici, vous passez simplement à la troisième position qui correspond au contexte le plus rapide. deuxième est le nom de l'écran. C'est l'ID de point de contact. Je vais contacter, mais j'aimerais passer au deuxième écran, donc je vais fermer le deuxième écran. Ici, nous pouvons filtrer. Si vous voyez le rouge, c'est ce paramètre d'argument appelé arguments. Et ici, vous pouvez simplement écrire le nom comme clé et valeur. Comme vous pouvez le constater, Mark Zuckerberg. Et je dis juste ici, supposons que j'envoie deux valeurs, fondateur, Facebook, d'accord ? Nous envoyons donc maintenant leur valeur, mais dans ce deuxième écran, nous devons l'accepter. Récupérez-le. Et pour récupérer les données. C'est le code dont vous devez vous souvenir qui est modélisé itinéraire. Beaucoup de contexte, de paramètres de points, d'arguments de points aussi. Souvenez-vous simplement de cela. Je vais tout d'abord vérifier si c'est nul. C'est-à-dire si la valeur est donnée ou non. Neck, ce n'est pas égal à null. Et ici, cela montrera un peu de rouge, de rose, car il ne peut pas y avoir accès inconditionnellement. Parce que cela peut évidemment être nul aussi. Donc, soit nous devons utiliser l'opérateur comme ça, ce qui signifie qu'il est blessé. Nous savons r, nous pouvons la VR, lui permettant de vérifier. Ce concept est récemment ajouté dans la non-sécurité. Donc ici tout d'abord, nous vérifions si ce n'est pas nul, puis oui, sauf le stocker dans une variable. Même chose. Copiez et collez. Et comme une carte. Vous devez donc écrire la carte dans l' ordre en tant que carte, sinon il s'agira d'un objet. C'est un objet, ce que nous disons Non, c'est une carte ici. Et puis écrivez simplement des arguments. La première clé était le nom, puis l'impression des arguments. Et la deuxième clé était la fondatrice. Nous allons vérifier encore une fois. Maintenant, depuis le premier nom d'écran et le bailleur de fonds, pouvons-nous l'imprimer ? Dès que nous passons au deuxième écran ? Allez sur le deuxième écran et découvrez Mark Zuckerberg et Facebook. C'est donc le V ofs qui transmet des données au nom drop. Notre plus tôt, nous avons appris à transmettre les données à un mode de navigation normal, qui est normal à travers la construction. Et la deuxième méthode consiste à utiliser un itinéraire de nom. Ici, nous devons nous assurer que nous nous souvenons des contextes de points de route du modèle. C'est un moyen d'extraire les valeurs de navigation vinyle. Par conséquent, la dernière chose qui ne passe pas la valeur est que nous pouvons également renvoyer une valeur lorsque vous revenez en arrière. Ainsi, du premier au deuxième écran, nous allons apprendre à transmettre des données. Mais il peut y avoir des scénarios où, à partir du deuxième écran, vous devez obtenir une sorte de conformation. Une sorte de succès, peut vendre le statut et ce qui entraînera ce changement dans ce premier écran. Pour cela, nous devons modifier la fonction post dans le premier écran pour nous assurer qu'elle attend la valeur en utilisant wait et transmet la valeur dans la fonction pop de ce deuxième écran. Ce que je veux dire par là, c'est que dans le premier écran, supposons que en poussant, le moment je n' envoie aucune donnée. Nous devons attendre. Donc, moi, le statut Boo est égal à attendre. Ce concept asynchrone et attend définitivement que nous apprendrons lors de la prochaine session. En ce moment. Vous vous souvenez juste ici que nous attendons cette valeur, cette fonction, que cette action soit terminée. Et ensuite, sur la piste, la valeur sera stockée dans cet état booléen. Et ici, je vais juste dire le statut de l'impression. Et maintenant, à partir du deuxième écran. Pendant que nous revenons en arrière, nous apprécions. Ici, je vais simplement écrire un contexte de Bob à points. Et puis ici, nous avons juste coupé ma relation vraie. C'est ça. Si simple que nous sortons de l'écran, nous devons envoyer cette vraie valeur. Maintenant, lorsque je passe au deuxième écran et que je clique sur, revenez en arrière avec la valeur c, true. Ceci est donc imprimé dès la première semaine car nous devons attendre. Il attendait que nous revenions du deuxième écran à l'écran. Et après cela, seul ce code a été exécuté comme asynchrone et l'attente est un concept très important. C'est ce qu'on appelle la programmation asynchrone. Et certainement dans la session ultérieure, nous allons approfondir cela car sans ce concept, vous ne serez pas en mesure de créer une application complète. Cette partie de navigation est donc terminée. J'espère que vous vous êtes amusé et que tous vos doutes étaient clairs. Essayez de créer de plus en plus d'écrans et de le pratiquer, car vous devez certainement vous en souvenir par cœur. Merci. On se voit lors de la prochaine session. 24. Widget de navigation avec tiroir: Dans cette session, nous parlerons du widget chalut, vous pouvez également dire qu'il envoie une barre de navigation latérale. Donc, si vous avez utilisé une application telle qu'Amazon, je suppose que la plupart de l' application comporte ces trois lignes ou sur l'icône de hamburger en haut. Lorsque nous cliquons dessus, barre latérale est livrée avec beaucoup d'options pour naviguer. Donc, en Floride, c'est un moyen très facile de le mettre en œuvre. Dans les applications qui utilisent la conception de matériaux, il existe deux options principales pour la navigation. Tout d'abord, les robinets. Autrement dit, si vous voyez l' exemple de ce que CEP, les onglets en haut, les chats appellent ces étapes. Et l'autre option est celle des tiroirs. Lorsque l'espace est insuffisant pour prendre en charge les robinets, pour offrir une alternative pratique, nous ne pouvons utiliser un tiroir qu' à l'intérieur d'un widget d'échafaudage. Vous devez donc vous en souvenir. Essayons ça. Allons au premier écran. Échafaudage Indus. Nous avons ce tiroir. OK. Il s'agit d'une syntaxe de l' écriture dans notre widget. Voyons s'il se passe quelque chose sur le premier écran. Voyez que cette icône de hamburger est arrivée. Ces trois lignes. Quand je clique dessus, nous avons ceci, cette navigation latérale apparaît. Mais comme nous n'avons rien à l'intérieur, il est vide. Mais j'espère que vous avez compris que nous n'avons qu'un seul code, nous avons pu le montrer dans l'interface utilisateur. Maintenant, à l'intérieur, il accepte un enfant. Je peux certainement, il y aura beaucoup d'autres laiteries, aura beaucoup de fuites d'opérations de navigation. Donc, là-dedans, nous allons utiliser supposons que la colonne ListView ne soit pas colonne. Et je vais vous montrer pourquoi nous n'avons pas choisi la colonne aussi. Mais pour l'instant, rappelez-vous simplement, sauf qu'à l'intérieur, il n'y a qu'une vue de liste. Et dans ListView, V peut avoir différentes options. Tout d'abord, je vais simplement vous montrer le style de liste avec une seule option de navigation. Dans ce Titan. J'aurai le texte du deuxième écran. Et sur la touche, je ne ferai rien pour l'instant, mais je vais juste enregistrer et vous montrer notre première option de navigation qui va au deuxième écran que vous pouvez voir sont juste des exemples Accueil Contactez-nous À propos de nous catégories, Quoi que vous vouliez, c'est à vous de décider. Donc, si vous vous en souvenez, notre en-tête aussi, si vous vous souvenez de Gmail Lab, il y a dans l'en-tête des détails des comptes tels que le profit d'un nom d'utilisateur pour booster. Vous pouvez le faire en utilisant un compte d'utilisateur, un compte utilisateur, dessinez notre en-tête. Ensuite, j'ai simplement mentionné ces choses. Le nom du compte doit être Elon Musk, le compte, e-mail peut être Tesla, et qu'il s'agit de .com. Il est très rare que vous n'utilisiez jamais la ressemblance d'un compte Gmail. Le troisième, nous pouvons l'avoir. Donc, photo de compte courant, j'utiliserai un avatar circulaire. Et à l'intérieur, vous pouvez avoir une image réseau, mais j'utiliserai simplement une icône. Voyons quelle est la sortie. Mais si vous avez une application Gmail avec vous en ce moment, il suffit d'ajouter Gmail et de montrer. Voyez cette navigation latérale comme fin. Vous pouvez comparer et voir. Nous avons également cette image de profil, ce nom d'utilisateur et cet e-mail utilisateur avec ce magnifique arrière-plan. Vous pouvez également changer d'autres choses. Mais pour l'instant, il vaut mieux rester simple. Parce que le flottement est très vaste et il y aura beaucoup d'arguments de propriétés à donner. Si vous voulez voir, je vais juste aller ici et dire Couleur de la flèche, touche marge sur les détails pressés. Ce sont d'autres options. L'IA dirigée me donnera une icône à regarder. Maintenant, ça ressemble à ça. Supposons que c'est la maison. Je vais copier et donner un autre deck comme il suffit d'écrire. Voir. Donc, avec cette navigation latérale, c'est vraiment beau. Je vais juste sauter une autre page d'accueil. Eh bien, chez vous et écrivez qui ici. Vous pouvez voir ce tiroir. Maintenant, il a l'air très professionnel avec principalement à cause de cet en-tête. C'est toujours génial. Et comme je l'ai dit, il y a aussi quelque chose appelé en-tête de tiroir, que vous pouvez essayer vous-même si vous le souhaitez. Et maintenant supposons qu'il ne s'agisse pas de ListView mais de la colonne, disons qu'il y ait quelque chose de changement. Dites non, rien n'a changé. Mais n'oubliez pas que si vous avez beaucoup de données qui sont encore là et qu'elles ne seront pas défilantes si vous utilisez une colonne. Donc, listez-le que nous l'utilisons lorsque vous avez beaucoup d'autres options . La colonne fonctionne très bien. Également. Allons maintenant naviguer. Vers l'écran d'accueil. Je me rapporte, je navigue, pousse. Dan sur la route. Nous aurons un constructeur de pages. Contexte. Le nom est l'écran d'accueil. OK. Allons vérifier. Avons-nous accès à l'écran d'accueil ? Vous voyez, nous sommes sur l'écran d'accueil. Maintenant. Vous devez prêter attention et comprendre ce qui se passe lorsque nous cliquons sur le bouton Retour en arrière. Lorsque nous cliquons sur le bouton Retourner, ce dessin est toujours ouvert, mais il n'a pas l'air bien. Il devrait être fermé comme ça. Bien loin, avant de passer par, il faut sauter. Nous devons écrire, naviguer vers le haut pour fermer le tiroir, puis passer au deuxième écran. Démarrez votre application. Maintenant, quand je vais à la maison, nous naviguons vers cet écran d'accueil, mais pas dans ce temps si je clique sur le bouton Précédent, il arrive correctement à l' écran d'accueil et non pas ce dessin ajouté parce que nous avons déjà fermé avec le navigateur Dot Pop. donc vous souvenir de cette chose car lorsque nous avons une application complète, vous ne voulez rien qui ne soit pas placé dans l'utilisateur. L'utilisateur s'agace ou quoi que ce soit, il faut l'éviter. Alors assurez-vous de prendre note de ces choses, car disposez-les plus tard au bout d'un mois, vous pourriez l'oublier. C'est ça. Tout est loin en bas et dessinez une partie. cette prochaine vidéo, nous parlerons de la navigation en bas. Merci. 25. Barre de navigation inférieure: Aujourd'hui, nous parlerons de la barre de navigation inférieure. Je le laisse si nous avons discuté de ce qu'est un tiroir et de la façon de le mettre en œuvre. Il s'agit donc d'une autre navigation très souvent. Et ce widget est utilisé dans la plupart des applications. Parce qu'imaginez que c'est l'écran et que dans cette zone qui n'est pas un côté inférieur, il y a certaines options qui sont des mosaïques, c' est-à-dire le contact à domicile ou les chats ou autre. Si nous cliquons dessus, ainsi le nettoyage sera modifié. C'est donc un widget très cool, qui a été donné par le framework Florida. Et nous pouvons facilement l'ajouter à l'échafaudage. Comme dans ce tiroir aussi. Il y a un paramètre dans l'échafaudage. Essayons par nous-mêmes. Et si vous voyez la syntaxe dans cet échafaudage, il y a cette barre de navigation inférieure, qui accepte une barre de navigation inférieure, rigide, qui comporte une paire. Le premier paramètre est l'indice actuel. Autrement dit, quel écran est VR à ce moment-là, à ce moment-là. Et le second est celui des objets. Quels sont ces éléments qui sont, c'est l'icône ou cela peut sauver ce que nous, ce que nous sommes sur le point de naviguer. , est-ce que les chats à domicile sont ce que nous voulons mentionner dans l'interface utilisateur ? Et le troisième est sur le robinet. C'est ce qui devrait se produire si quelqu'un appuie sur cette option de navigation. Habituellement, nous devons changer cet écran. Et ici, dans la section Notes, vous pouvez voir qu'il devrait y avoir plus d'un élément de la barre de navigation inférieure pour que cela fonctionne. Évidemment, si les autres éléments multiples ne font que pécher la navigation. Pour une option, pourquoi quelqu'un utilise une barre de navigation inférieure ? Cela ne sert à rien. Ici, sur l'image, vous pouvez voir de quoi je parle. C'est ce que nous sommes sur le point de construire. Sortez votre code VS. Et maintenant, OK, nous ne l'avons pas fait. C'est l'erreur due à la chose booléenne. Rien de plus. Puisque vous avez déjà mentionné que nous avons besoin d'une valeur booléenne. Commentaire, grillage. Et ainsi, l'échafaudage utilisera la barre de navigation inférieure. Et le nom d'un widget est la navigation en bas, mais il contient maintenant des éléments. Index actuel pour l' instant, nous allons simplement dire 0 éléments. Je vais avoir une barre de négation. Je ne sais pas comment donner une icône. Je devrais l'être. Nous utiliserons étiquetés car l'idéal est d'être déprécié et que l'étiquette accepte la chaîne. Tout droit à la maison. De même, les jours et collez deux fois, disons que vous pouvez et finira ici. Et quand supposons que vous puissiez faire un cauchemar, je garderai les choses simples. Et nous allons juste dire, d'accord. Et la prochaine est là-dessus. Ce qui donne, qui est une fonction qui nous donne un index. Je vais simplement imprimer l'index pour l'instant et voyons ce qui a été fait. Voir les utilisations des contacts à domicile. C'est tellement beau. Lorsque je clique sur Contact, l'index est 1. Lorsque je clique sur Utilisateurs, l'index est deux. Lorsque je clique sur OK. Whoa, l'indice est 0. C'est donc de ça que je parle. Avec cet indice. Nous allons maintenant faire les modifications afin que chaque fois que quelqu'un clique sur contact, il devrait aller sur la page de contact. Ou vous pouvez dire ici que la page de contact sera créée. Non, nous ne naviguons pas directement, mais ici seulement sur cet écran, seules les pages Alda que nous verrons. Maintenant, ce que nous devons faire. Nous avons une deuxième rate. Nous avons un écran plein écran. Votre écran. Vous allez simplement à l'écran et en haut, moins ont un entier égal à 0. Le deuxième devrait être une liste de pages. Ici. Que ne devrait-il pas arriver ? Nous devrions écrire toutes les pages dont nous avons besoin. Donc, il faut d'abord supposer que l'écran est un contact. Et le troisième est celui qui est mon état plein écran. Mon état en plein écran. D'accord. Nous avons toutes les pages ici. Maintenant, finissez simplement corps. Ici, dans le corps. Je vais tout supprimer et écrire des pages. Alors l'indice est au tout début, c'est toujours le cas. Mais quand quelqu'un clique sur quoi que ce soit, ça devrait changer. C'est l'état, l' état devrait changer. Et pour cela, nous devons en faire une vision complète de l'État. Maintenant, c'est un widget avec état. Quand quelqu'un appuie sur cette navigation particulière, dit un état de l'index 2, cet index que nous obtenons le d 0, 1, 2, 3. Alors, vous pensez peut-être, pourquoi ? Quel est le besoin ? Je vais vous expliquer encore une fois. Nous avons une liste de pages, un poste dans l'école à domicile, puis un contexte de position propre et pour positionner mon écran dynamique. Et nous avons une variable appelée index, qui commence par 0. Ainsi, au tout début, l' écran d'accueil sera toujours affiché lorsque quelqu'un démarre notre application. Parce que dans ce corps, nous avons ces pages et l'index est 0. Maintenant, chaque fois que quelqu'un clique, il faut appuyer sur n'importe lequel de ces éléments de la barre de navigation inférieure. Qu'il s'agisse d'un contact faible ou autre, son indice va en prendre un. Et cet écran s'affichera. Sortez l'émulateur et voyez que nous avons ce contact. Nous avons cette maison, et nous avons ces utilisateurs. Alors, quelle école à domicile ? C'est la maison de Sibelius. Changez l'écran et l'écran comme ceci. Maintenant, l'écran d'accueil est correctement. Et les utilisateurs, nous avons toute la liste. Maintenant, je ne veux pas 2 de cette partie d'application. Donc, ce que je peux faire soit je peux retirer la barre AB de l'écran, c'est le premier écran. Apportons à nouveau notre application. Disons que c'est bien mieux. Maintenant, quand je change au bar, ça change. Mais ça, c'est très joli. De plus, vous pensez peut-être pourquoi cette couleur ne change pas, car nous n'avons pas mentionné cet indice ici. Nous venons de lire 0. Mais ici, nous devons écrire cet index variable. Et puis réessayez. Maintenant, cette chose bleue, couleur bleue sera affichée sur tout ce que nous cliquons, Voyez maintenant le contact est bleu. Maintenant, lorsque nous cliquons sur les utilisateurs, cela est mis en surbrillance. Il a l'air très bien. Nous avons maintenant une interface utilisateur très basique, au moins. Nous avons appris comment fonctionne ce dessin, comment fonctionne la navigation inférieure, comment naviguer d' un écran à un autre. Dans ce module, nous avons donc beaucoup appris. Dans le prochain module, nous aborderons d'autres concepts de Flutter Framework. D'ici là, entraînez-vous simplement et assurez-vous de comprendre tout le code par votre cœur. Merci. 26. Plonger profondément dans le widget TextField: Dans ce module, nous parlerons de la vierge TextFile. V va entrer très profondément dans ce widget car c'est le seul widget que nous utiliserons intensivement pour gérer les entrées des utilisateurs. Dans n'importe quelle application. Il faut le faire. Nous devons prendre quelques commentaires, soit le nom d'utilisateur, le mot de passe, ce qu'ils aiment, ce qu'ils n'aiment pas, quel que soit l'âge. textfield est donc une région très importante. Qu'est-ce qu'un champ de texte ? Je pense que nous en avons déjà discuté. remplissage de textes en Floride est le widget le plus couramment utilisé qui permet aux utilisateurs de collecter des entrées depuis le clavier dans une application. Il s'agit donc d'un extrait de code qui est la syntaxe de la façon d' afficher un champ de texte. Il a certaines propriétés comme toujours, décoration, bordure et bien d'autres. Donc, pour commencer. Et ce que j'aimerais faire, c'est que j'aimerais supprimer les écrans précédents car je ne veux pas beaucoup d' écrans à l'heure actuelle. Si vous ne le voulez pas, vous pouvez simplement les laisser tels quels. Mais comme c'est un nouveau module, je retirerais tout simplement. Nous avons ce dossier principal. Je vais créer un nouveau fichier hors page, point, point. Comme toujours. Je vais juste créer cette date moins rigide de la page d'accueil. Et nous aurons cet écran d'accueil. Commençons par cet échafaudage. Utilisez l'entrée. Et dans la partie aura un assistant de colonne v dont l'alignement de cellule principal existe. L'alignement sera au centre. Et les enfants. Maintenant, dans ces enfants, j'aurai ce champ de texte. Car avec cette propriété de déclaration, nous pouvons donner des décorations telles que ce qu'il faut faire, ce que représente ce TextFile. Avec ce texte de niveau. Vous devez écrire son nom. Et bordure. Je veux décrire la frontière. Rechargeons notre application et sauvegardons la sortie. Pour vérifier cette sortie. C'est un écran basique. Nous avons rempli le texte en bas. Également. J'aimerais envelopper cette colonne avec un widget de rembourrage afin que nous ayons un peu d'espacement tout autour et que cela semble un peu décent maintenant. De plus, si vous le souhaitez, vous pouvez envoyer deux de l'APA. Assurez-vous de vous souvenir de ces propriétés en vous entraînant. C'est pourquoi je vous suggère d'écrire des écrans à chaque fois par vous-même, afin qu'à la fin du cours, vous apprendrez tout ce code. Souvenez-vous donc de tous ces codes par cœur, et vous n'avez pas à vérifier encore et encore. Nous avons donc maintenant ces textes remplis de dommages. Mais nous devrions savoir comment récupérer la valeur de ce texte. Maintenant, si j'écris, il devrait certainement y avoir code pour récupérer la valeur du champ de texte, dont nous parlerons dans la prochaine vidéo. Merci. 27. Ajouter un contrôleur de texte: Aujourd'hui, nous allons apprendre comment récupérer la valeur d'un champ de texte. Nous avons déjà ce texte. Mais au moins, nous devrions savoir comment obtenir w, quel que soit le type d'utilisateur. Pour cela, nous utiliserons la méthode du contrôleur. Quelles sont les étapes ? La première étape consiste à créer un contrôleur d'édition de texte comme celui-ci. Ici, vous pouvez voir que nous avons un type d'édition de texte qui peut collecter. Ensuite, le contrôleur signifie que c'est le nom de la variable, qui est égal au contrôleur d' édition de texte. Maintenant, attachez ce contrôleur d'édition texte au champ de texte. Dans ce champ de texte, la zone est définitivement une propriété appelée contrôleur, dont la valeur doit être un nom de contrôleur sombre. Maintenant, la troisième consiste à récupérer la valeur du champ de texte à l' aide de la méthode de texte à points fournie par le contrôleur d' édition de texte. Vous pouvez donc voir ici que cela produira W, c'est-à-dire que lorsque nous écrirons le nom de ce contrôleur d' édition de texte, puis point txt, il affichera la valeur de chaîne. J'espère donc que vous avez compris les étapes de l'utilisation d' une foulée d'un kilomètre par nous-mêmes. Donc ici, tout d'abord, je vais définir ce contrôleur d' édition de texte et le nommer comme contrôleur, qui équivaut à contrôleur d' édition de texte. D'accord ? La première étape est faite, c' est-à-dire ce contrôleur txt et fin créé. Deuxièmement, ce film sombre de Controller 28 textes. Nous avons ce champ de texte ici. Voyons voir s'il y a une propriété appelée contrôleur ? Ici ? Il s'agit du contrôleur de nom de propriété qui accepte une valeur de contrôleur d'édition de texte. Et notre apprentissage s' appelle les contrôler. D'accord ? Maintenant, cette troisième étape est la valeur du champ de texte en utilisant le point txt. Maintenant, nous allons d'abord en dessous du texte pour quand nous devrions avoir un bouton surélevé et laisser une date. Et chez cet enfant, je vais simplement écrire des imprimés. Et surélevé. J'imprime. Quel est le nom du contrôleur ? Contrôleur de noms et point txt. D'accord. Recommençons par le nom. Je veux dire, c'est vrai. Jeff Bezos. Et il suffit de cliquer sur Imprimer et de voir dans la console de débogage, vous pouvez mettre tout ce que j'ai dans le champ de texte. Également. Si vous souhaitez l'afficher à l'écran. Dix, nous pouvons simplement faire de cette page d'accueil un widget avec état. Et ce contrôleur de noms. Nous pouvons l'avoir quelque part ici. Au-dessus de ce texte, il suffit d'écrire le nom du contrôleur de points style x et d'avoir une taille de police de la police, de la police, du poids, du gras et des lays, point. Qu'est-ce qui est bon. Et de même, comme le OK. Et maintenant, nous avons juste ces tests. C'est ça. Essayons ça. Cela fonctionne-t-il ou non ? Maintenant, si j'écris Elon Musk et que je clique sur Print C, nous pouvons produire ce que nous avons écrit dans l'interface utilisateur cette fois et non dans la console de débogage car nous utilisons l'état défini. C'est juste que je veux juste que vous pratiquiez cela encore et encore et compreniez à cause de cet état d'incrédulité et Chen a été appelé à nouveau. Et maintenant, ce texte a cette valeur d'Elon Musk. Une autre façon de récupérer la valeur est que nous pouvons laisser une variable appelée chaîne, name est égale à mt. Supposons. Et dans ce champ de texte, nous pouvons simplement écrire sur les modifications. Et ici, nous avons la valeur. Et cette valeur, ceci, quel est le nom ? String est le nom doit être appelé pris pendant que vous, c'est tout. Et nous pouvons également envoyer des tests. Nous pouvons juste définir cet état. Et ici, le texte doit être simplement une variable de nom. Il s'agit d'une autre façon de récupérer la valeur du champ de texte lors de la modification. Mais la plupart du temps, les gens utilisent le contrôleur d'édition de texte au lieu de cela inchangé. Mais ce n'est pas comme si vous ne pouvez pas l'utiliser. Je vais simplement écrire mon nom comme qui était. Il y a très bien. Personne ne me vient à l'esprit qui présente simplement Bill Gates. Mais vous voyez, lorsque je tape, il met à jour l'interface utilisateur car sur la chaîne, c'est comme chaque fois que nous cliquons sur un clavier, un alphabet ou chaque fois qu'il est modifié, tout l'écran sera reconstruit. C'est ça. Voici donc les deux façons de récupérer de la valeur. La plupart du temps, le contrôleur d'édition de texte sera inchangé et nos autres capteurs d'option, tels que sur le pays d'édition, complétés le moment soumis. Ce sont également d'autres moyens d'obtenir W. Si vous voulez en savoir plus, vous pouvez également effectuer une recherche. Mais je vous ai appris le plus, le plus, utiliser le plus d'application ou la meilleure façon de récupérer la valeur du champ de texte. Merci. 28. Valider l'entrée utilisateur: Au cours de cette session, nous parlerons façon de valider les commentaires d'un utilisateur. Mais avant cela, vous devez comprendre un nouveau widget appelé widget de formulaire. implication d'un formulaire vierge dans votre application facilite simplement la validation d' une réinitialisation et l'enregistrement de plusieurs champs de saisie à la fois. Et n'oubliez pas que nous utilisons le champ de formulaire de texte du widget à l'intérieur du formulaire plutôt que des textes. Nous sommes donc là, nous utilisons du texte testament. Mais puisque nous utiliserons complètement la forme à partir de maintenant. Nous devons donc utiliser ce formulaire de texte rempli avec lui. Donc, ce que nous devons faire, nous allons tout simplement d'abord supprimer ce nom et OnChange. Ensuite, pour que le widget de formulaire fonctionne il suffit d'envelopper cette colonne avec le budget. D'accord ? Cette partie est terminée maintenant. Et ce champ de texte doit lire le formulaire de texte rempli. Cela est également fait. La prochaine partie est maintenant la validation des formulaires. Donc, si vous créez une application, est-ce que si vous recevez des commentaires de l'utilisateur, il est très nécessaire que vous validiez les entrées ? Parce que supposons que vous ayez un mot de passe qui doit comporter au moins huit caractères et que l'utilisateur ne tape que quatre caractères, alors nous ne devrions pas lui permettre qu' un numéro de téléphone soit d' au moins 10 chiffres. Il ne peut pas simplement sélectionner neuf chiffres et donner un faux numéro à notre application. Donc, pour nous assurer que ces adders ne se sont jamais produits avec nous, nous aurons des règles de validation de formulaires très strictes. Donc, pour valider une ferme en flottement, nous devons mettre en œuvre principalement trois étapes. La première étape est utilisée comme widget de formulaire. Nous prenons la clé mondiale. Quelle est donc cette clé mondiale ? Rappelez-vous simplement que c'est une sorte d'état que nous allons combiner ou vous pouvez dire que nous allons donner à la ferme afin que nous sachions plus tard quel est le statut de l'entreprise les validations fonctionnent. correctement ou pas pour cela. C'est juste une syntaxe dont nous devons nous souvenir. Ce n'est pas très compliqué. Je vais juste lui donner le nom de variable de clé étrangère et le définir sur bleu volumineux. Et puis ici, l'état de la forme. Il s'agit de la syntaxe qui consiste à attribuer une clé d' état globale et à la copier. Et dans le champ de la ferme, vous aurez cette propriété appelée clé et collez-la ici. De cette façon, vous pouvez vous assurer que Lou volumineux et votre téléphone sont connectés. La première étape est maintenant terminée. Deuxièmement, l'utilisation de textes de n'a pas réussi à donner à l'entrée remplie de la propriété validator. Il y a donc cette propriété millilitre que nous devons utiliser. Bon, nous allons le faire. Et la troisième étape est créée par 10 pour valider le champ de batterie et afficher l'erreur de validation. D'accord, nous allons d'abord faire l'étape 2, laquelle une règle de validité est attribuée au formulaire de texte. Pour l'instant, nous devons utiliser la fonction validateur dans ce texte amusant pour valider les propriétés d'entrée si l'utilisateur donne la mauvaise entrée. La fonction validateur renvoie une chaîne contenant un message d'erreur. Sinon, la validité de la fonction renvoie null. Allons dans le champ du formulaire de texte. Ici. J'aurai simplement cette propriété de validateur, qui est une bonne valeur Shen Dao, quelle que soit la saisie. Ici, je vais simplement vérifier si la file d'attente est vide. Vous pouvez également dire si la valeur est égale à. Maintenant, comme ça. Vous pouvez maintenant voir la chaîne vide comme celle-ci. Ensuite, j'ai gagné. le champ tournant est obligatoire, sinon, renvoie null. Alors, d'accord, et ensuite l'étape suivante de la loi tactile était de créer le bouton que nous avons déjà fait, qui le valide. Formulaire rempli. Voici donc le code dont vous vous souvenez, mais il est temps d'utiliser la clé étrangère. Je vais simplement écrire Qi dot state dot valider. La date actuelle validate par point est égale à true. Vous pouvez dire : Oui, je vais simplement écrire, imprimer. Soumettez 10 sexes pour Li k est mort. Tout d'abord, Stefan. Et je ne soumettrai pas d'impression. Il a l'air professionnel. Dans une chaîne vide. Si je clique sur Soumettre, voir Phil est obligatoire. C'est donc la validation dont je parlais. C'est très important car, lorsque vous disposez d'un formulaire de connexion ou d'inscription, vous devez montrer à l' utilisateur ces messages d'erreur sous forme de commentaires car l'utilisateur ne veut pas simplement rester sur son écran et ne faites rien. Et si j'écris flirté puis que j'imprime Submit, vous pouvez voir des entreprises que nous avons faites avec succès. Donc oui, c'est ainsi que vous validez le champ de formulaire. Vous pouvez également avoir plusieurs champs de formulaire. Je vais simplement vous montrer un formulaire de plus. suffit d'écrire simplement le nom mot de passe et le mot de passe ou est-ce une commande acquise ? Non, je vais juste lui donner une longueur. Longueur du point de valeur inférieure à trois. Si la longueur du point de valeur est inférieure à 3 et que nous obtenons mot de passe devrait être supérieur à trois. Réalisateurs. Maintenant, j'ai un nouveau formulaire x gratuit, mais cette clé étrangère, cette police suffit à valider à la fois ce champ de texte et aussi pour le deuxième champ de texte, nous devons créer un autre contrôleur d'édition de texte, qui sera nommé contrôleur de mot de passe. Je vais simplement le copier et le coller ici. Maintenant, si j'écris le nom flirté, mais que le mot de passe je ne donne que 12 caractères, alors voir le mot de passe doit comporter plus de trois caractères. Maintenant, si j'ai quatre caractères et que je clique sur Envoyer, le formulaire a été envoyé avec succès. Mais c'est ainsi que vous validez plusieurs champs à la fois à l'aide de la clé de formulaire. Et ce n'est pas le cas, nous utilisons ce widget pour valider les champs de formulaire ou vous pouvez dire des champs de texte. Maintenant, un autre concept que vous devriez connaître RE, qui pourrait vous être utile est de sauver une entreprise. Lors de la création d'une application, nous souhaitons probablement enregistrer les données du formulaire pour faire quelque chose avec cela. Dans cet ensemble, nous allons simplement créer des règles d'enregistrement pour d'autres champs. Et quand nous appellerons l'Ancef mon père, il exécutera ces trois règles. Ce que je veux dire par là, c'est dans ce champ de texte, en dehors du validateur, que nous avons perdu sur sauvegardé. Et je vais simplement imprimer ici. Je vais simplement imprimer un nom. Le champ est enregistré. Et dans leur validité qui est isolée sur sauvegardé et imprimé. Le champ Mot de passe est enregistré. Et pour nous assurer que ce code ou cette fonction est exécuté, nous écrivons simplement une clé étrangère, point courant état point save. C'est ça. Vous en aurez peut-être besoin quelque part. C'est à vous de choisir. Mais au moins, vous devez savoir que ces concepts sont également là. Quand nous entrons dans l' application et de couleur grise, je vais 2345. Et cliquez sur Soumettre. Voir nymphal le même mot de passe pour enregistrer les listes, puis les formulaires soumis avec succès. Donc ici, nous venons d'imprimer le début de la valeur, mais il peut être utilisé pour attribuer la valeur deux variables, r et faire un appel réseau sur ce qu'ils étaient SET, fait état ou ce que vous voulez, c'est à vous de choisir. Mais chaque propriété ou chaque méthode est utilisée à une certaine fin. Et maintenant, c'est à un développeur ce qu'il veut et ce qu'il ne veut pas. Mais j'espère que vous avez compris comment valider un champ de formulaire et vous assurer que l'utilisateur ne saisit pas ce qu'il veut. Au cours de la prochaine session, nous parlerons davantage ce champ de texte et de ses propriétés. Mais d'ici là, j'espère que vous apprécierez. 29. Décoration et autres propriétés: Jusqu'à présent, nous avons appris comment utiliser les fonctionnalités des champs de texte, comment valider, comment enregistrer et quoi que ce soit. Mais maintenant, nous allons le faire paraître bien. Ainsi, pour la décoration, les textes réutiliseront la propriété de déclaration, qui prend une décoration d'entrée comme valeur. Essayons ça. Nous avons donc ce champ de texte hors nom. Ici. Nous avons déjà cette propriété de déclaration qui accepte la décoration d'entrée sa valeur. Donc maintenant, tout d'abord, il s'agit du texte étiqueté, que nous avons utilisé pour donner des informations à l'utilisateur. Maintenant, je vais devoir supprimer ça. Et le second est le texte de l'indice. Il s'agit donc d'une solution. Je vais donc juste écrire votre nom. Bon, voyons voir. Vous pouvez voir tout d'abord utiliser les propriétés d'indice et de niveau pour donner des informations à l'utilisateur. Maintenant, quand je clique sur le nom, vous pouvez voir qu'il y a cette chose supplémentaire. C'est vrai, votre nom complet. Donc, quand nous écrivons quelque chose, il est supprimé. Et quand il est vide, il est de nouveau affiché. Deuxièmement, vous pouvez ajouter des icônes en utilisant je peux préfixer, je peux ajouter un suffixe, je peux ajouter des propriétés de la décoration d'entrée. Ce que je veux dire par là, c'est dans la déclaration d'entrée, tout d'abord, je vais vous montrer. Je peux le faire. Je peux, je peux commencer. Maintenant. D'accord. Jetez un coup d'œil. voyez, vous avez cette icône ici. Maintenant, quand je dis le préfixe d'une canette, c'est la même chose sur Linden Lu qui est bordée, s'étend. Il vient à l'intérieur de la frontière. Lorsque nous écrivons un préfixe et un suffixe, je peux le faire. Nous avons cette icône sur le côté droit. C'est donc la seule différence. Rien de plus. Mais il y en a définitivement, cette icône lui donne beaucoup d'efficacité et d'apparence, j'aime bien ce préfixe, donc je vais le laisser avec ce préfixe que je peux. D'accord. Le suivant. Vous pouvez également donner de la poudre pour l'ajout productif, supprimer à ce sujet avec un champ de texte. Donc en ce moment, si nous n' écrivons pas ou ne donnons aucune belle propriété, alors en bas se trouvent le troc vers le bas est déjà jours par défaut, vous pouvez également supprimer cela. Pour supprimer cela, nous devons simplement écrire des entrées, des hamburgers et des sauvegardes. Et voyez que c'est en dessous de la frontière. Mais si vous êtes comme moi, c'est que j'aime toute la frontière. Notre paramètre d'entrée de plan est donc la valeur que nous devons lui attribuer afin qu'il ait une bordure de tous les côtés de celui-ci. Et c'est très joli. Et aussi, je voudrais donner un peu d' espacement entre les textes, remplir un formulaire de texte adapté à ce que je serai appelé psi squawks. C'est juste des cadeaux et, euh, donnez-lui une hauteur de 20. Il y a donc cet espacement entre les deux textes, les champs de ferme. Maintenant, la troisième déclaration que nous pouvons utiliser est d'utiliser des textes d'aide. Si vous ne voulez pas d'étiquette, mais que vous souhaitez que l'utilisateur affiche un message persistant. Ce que je veux dire par là, c'est que dans ce formulaire de texte de mot de passe rempli, j'aurai simplement le texte d'aide et le mot de passe. Patron, plus de trois. D'accord. D'accord. Vous avez vu des textes étiquetés, vous lui avez vu des textes. Voyons maintenant quels sont les textes d'aide. Et voyez ici, c'est toujours là. Si je clique sur le mot de passe, il apparaîtra également ici, il ne sera pas supprimé. C'est donc une bonne chose de s' assurer que l'utilisateur ne fait aucune erreur parce qu'il ne sait peut-être pas que votre application, sauf le mot de passe sur légalement puis trois caractères dans ce cas détenaient. La propriété Text est très pratique. Maintenant. Ensuite, vous pouvez également modifier les propriétés du clavier pour TextField. C'est-à-dire que les types sont les textes d'entrée, type d'entrée, le texte, c'est-à-dire le clavier normal, puis le type d'entrée de texte, le numéro de point adresse e-mail numérique, le clavier normal, nous, nous tendons au signe de taux, date, heure, puis multiligne. Par exemple, j'aurai un nom, supposons alors un nom. Et rappelez-vous que ce type de clavier est des propriétés en dehors de la déclaration d'entrée ici. Et il y a un type de clavier, texte, un numéro de point de type entrée, et c'est tout. Et je dirai, et quand je clique sur Nom maintenant, ce clavier numérique apparaît. Cela est donc utilisé lorsque vous demandez de l' âge ou que vous pouvez enregistrer principalement un numéro de téléphone. Pour cela, vous devez utiliser cette technique de clavier. Maintenant, quelle est la signification de ce texte obscurcissant pour masquer texte dans si TextField définit la propriété skirt text sur true, nous l'utilisons principalement dans un champ de mot de passe. Donc définitivement, vous savez, quand l'utilisateur est et pendant son mot de passe, nous ne voulons pas qu'il soit dans les alphabets normaux. Nous voulons le cacher. Pour cela, il suffit d'aller dans le champ du formulaire de texte en dehors de la déclaration d'entrée, n'est-ce pas ? textes obscurcis et je viens de dessiner. Et sauvegardez-le. Maintenant, quand vous allez dans le bus rempli de liquide et que vous tapez f, l, vous les urgences. Vous pouvez donc voir que le mot de passe est caché, il ne fait que des points et non pas l'alphabet approprié. C'est donc une bonne pratique car l'utilisateur remplit également ce que vous êtes, que cette application est sûre à utiliser. Maintenant, la propriété suivante ou le champ de texte de l'entité suivante contrôle le maximum de caractères, Codex Wilkin les contrôle, les numéros de caractères de Mac, un terme à l'intérieur. Donc, si vous le savez intuitivement , est-ce que c'est notre limite ? De la même façon ? Nous pouvons avoir cette limite. Supposons que dans le champ Nom, nous puissions simplement écrire une longueur maximale de 15, c'est-à-dire plus que cela. Le nom de la personne sera très clair. Je vais donc dire ici que c'est un alphabet numérique. Mais depuis que vous avez mangé 15, si j'essaie de le franchir, non. Plus que ça, je ne peux pas taper. J'espère donc que vous avez compris les propriétés ou la déclaration de ce champ de texte. La même déclaration peut être utilisée dans champ de formulaire texte lorsque nous utilisons également un widget de formulaire. Donc, j'ai écrit que vous voulez savoir comment travailler avec des fichiers texte. Dans la vidéo suivante, nous allons découvrir quelques nouveaux widgets tels que les alertes, boîtes de dialogue et les snack-bars. Donc d'ici là, continuez à vous entraîner. 30. Widget de dialogue Alerte: Dans cette session, nous parlerons la nouvelle version appelée la boîte de dialogue d'alerte. Une boîte de dialogue d'alerte est donc une fonctionnalité utile qui définit l'utilisateur avec informations importantes pour prendre décision de fournir la possibilité de choisir une action spécifique. Donc, en termes simples, si vous voulez donner quelque chose comme une alerte contextuelle, l'utilisateur doit sélectionner oui ou non conforme à ces 10, nous pouvons utiliser une boîte de dialogue d'alerte. Quelles sont les principales propriétés de la boîte ? Ce sont des actions. Il s'agit de l'ensemble des actions affichées en bas de la boîte de dialogue. Généralement, les boutons, que j'ai déjà esquissés sont Canson, je suis d'accord Ce genre de boutons resserrent ensuite que j'ai adoré que cette boîte de dialogue s'affiche dans une grande police et le haut de la boîte de dialogue dans des mots simples, supposons, êtes-vous sûr ou un avertissement sont importants ? Ce type de mots-clés, puis de contenu. Cela donne une description du message sur le titre que vous aurez fourni. Donc, cela peut être simplement comme, êtes-vous sûr de vouloir désactiver votre compte, puis à partir des actions que vous pouvez avoir une estimation, messagerie instantanée ou non, c'est juste un scénario que je dis. Ensuite, simplement la couleur d'arrière-plan ou l'allégement. Par conséquent, pour afficher une alerte, vous devez appeler la fonction show dialogue, qui contient le contexte et la fonction générateur d'éléments. Vous pouvez donc voir ici que la syntaxe montre le dialogue, puis les contextes, les contextes réels des accepteurs et leur facture. Il existe une fonction qui renvoie une boîte de dialogue d'alerte. Essayons par nous-mêmes. Dans la dernière vidéo, nous l'avons fait jusqu'ici. La validation des fournisseurs est désormais vraie et le formulaire est enregistré. Ensuite, nous pouvons afficher un dialogue comme afficher la boîte de dialogue. Et ensuite, dans ce contexte, il s'agira de contexte. Mais le constructeur, cher Will we fonctionne, qui renvoie un dialogue d'alerte. OK ? Donc, dans la boîte de dialogue d'alerte, cette propriété titre, je vais utiliser comme 10 Q. Supposons. Ensuite, dans ce contenu, j'écrirai ce texte à partir du texte soumis avec succès. Soumis avec succès. Ensuite, dans ces actions, c' est-à-dire de l'eau, les boutons que je voudrais fournir sont une sorte d'action qu'un utilisateur prendra à partir de cette boîte de dialogue d'alerte. Je n'aurai pas de SMS, désolé. J'aurais un bouton surélevé qui écrira du texte. Et tout simplement K. Et après l'utilisation, cliquez dessus, d'accord, je veux que ce dialogue disparaisse, ça apparaisse. Habituellement, ce que vous pouvez faire est comme cela. Vous pouvez ensuite naviguer vers un autre écran. Ou si vous avez un bouton Annuler, alors cette fonction de point-pop de navigateur que vous devez utiliser pour que l'utilisateur de nouveau, cela supprime cette boîte de dialogue de l'écran et revienne à l'écran précédent. Voyons le nom. Je vais écrire flirt et mot de passe 123456. Ensuite, soumettez-vous et voyez ceci. Je parlais de ce genre de pop-up avec ce titre. Vous avez 10 Q et définissez le contenu ici. Et lorsque je clique sur ce bouton OK, voyez que cette boîte de dialogue ou cette boîte d'alerte disparaît. Et en plus des actions, sont les propriétés qu'il accepte. Il y a allégement, sa couleur de fond. Si vous écrivez des couleurs d'arrière-plan, accentuez, puis ajoutez un remplissage autour de ce contenu. Et voyez, vous pouvez donner un empilement intitulé en ajoutant un hibou dans cette forme, vous pouvez avoir une bordure rectangulaire arrondie ou n'importe quoi du genre. Vous pouvez donc avoir une bordure ronde puis Googler, un rayon de bordure. refroidisseur de configuration à rayon de bordure recevra 10. Revoyons à nouveau ce que cette couleur et cette forme d' arrière-plan apportent à notre boîte de dialogue d'alerte. Connaissant alors le nom, je laisserai flotter à nouveau, mot de passe 123456. Maintenant, lorsque je clique sur Soumettre, voyez que la couleur est rouge et que les bordures sont très belles ici parce qu'elles sont entourées. Vous pouvez donc dire qu'il peut s' agir d'une alerte indiquant que quelque chose a mal tourné ou chose du genre. C'est à vous de décider. Et si vous cliquez ailleurs ailleurs, la boîte de dialogue d'alerte disparaît également. Ce n'est donc pas toujours nécessaire. Nous pouvons, si nous le voulons, nous pouvons également nous assurer que cela ne se produise pas. Mais je suppose qu'il y a une autre propriété pour cela. Si vous voulez en apprendre davantage à ce sujet, vous pouvez simplement explorer vous-même. Mais une base, nous avons maintenant appris comment utiliser un dialogue d' alerte de base dans notre application flotter. Dans la prochaine session ou dans la prochaine vidéo, nous parlerons également d'un nouveau widget, le snack-bar. Merci. 31. Afficher Snackbar: Au cours de la session précédente, nous avons parlé de dialogue. Dans cette session, nous parlerons donc nous parlerons d'un nouveau widget appelé widget snack-bar. Le widget Snack Bar est utilisé pour afficher un message court. Il est généralement affiché en bas de l'écran. Et aussi, un satané message s' affiche pendant une très courte période de temps. Et l'heure spécifique du fournisseur a et du fournisseur est terminée, elle disparaîtra de l'écran. Donc, lorsque nous utilisons le snack-bar, cet utilisateur n'a pas à agir dessus. Plutôt pas d'interrompre son application juste mais quand nous utilisions la boîte de dialogue d'alerte, cela nous donne une pop up hip up. Ainsi, cet utilisateur, quel que soit l'écran sur lequel il travaillait, sera interrompu. Mais la collation, mais elle est très légère et elle vient et va. Elle est envoyée. Cela ne rend pas l' expérience mal à l'aise, prête, désagréable pour l'utilisateur. Il s'agit donc de la syntaxe. C'est un snack-bar basique, puis du contenu. Ici, le contenu accepte une vierge comme valeur, qui est généralement des textes visités. Maintenant, comment afficher un snack-bar ? Pour afficher la barre de collation v, vous devez utiliser ce code qui est échafaudage messenger point hors contexte. Et après cela, nous pourrons montrer un snack-bar. Essayons ça. Maintenant. Je commenterais tout d'abord cette boîte de dialogue. Et ici, je vais nous montrer snack-bar avec simplement échafaudage, messenger dot off contexte point C. Ici vous avez show snack bar. Et à l'intérieur, il suffit d'écrire une barre de nég. Et dans ce contenu, vous pouvez écrire un formulaire soumis avec succès. Bon, essayons ça. Apportez votre émulateur. Vous nommez le mot de passe 123456. Maintenant, lorsque je clique sur Soumettre, voir le formulaire soumis avec succès, et après deux ou trois secondes, il disparaît. C'est donc un très bon retour pour l'utilisateur. S'il y a une erreur. Supposons que le champ de mot de passe ou que l'utilisateur existe déjà. Ce type de messages d'erreur sont donc des messages de succès peuvent être affichés à l'aide du snack-bar. Maintenant, en dehors du contenu. Ainsi, le snack-bar possède également d'autres propriétés. Comme de l'action. Autrement dit, supposons que vous puissiez également avoir quelque chose comme rejeter, annuler, bouton OK. Identique à la boîte de dialogue d'alerte. Puis la couleur de fond. Supposons que j'ajouterai des couleurs, des points-points, lire, pas de lire, car cela dit succès, puis je laisserai vert. Ensuite, il y a une marge, forme de rembourrage, une durée également. C'est le cas si vous voulez que la durée soit inférieure. Donc, ici, vous pouvez avoir quelques secondes et j'écrirai simplement 1 seconde. Maintenant, essayons de nouveau. Flirter. Puis 1, 2, 3, 4, 5, 6. Et soumettez-vous. Et le formulaire C a été soumis avec succès. Et maintenant, comme c' était un, Deuxièmement, il a disparu plus vite que le précédent. Auparavant, je suppose que c'était deux ou trois secondes, une seconde par défaut. Maintenant, c'est à vous de déterminer combien de durée vous voulez. Ou aussi si, supposons que s' il existe un éditeur, vous pouvez avoir la couleur d' arrière-plan rouge. C'est donc un très bon retour pour l'utilisateur. Il n'est pas confus pourquoi il n'est pas capable de se connecter ou quelque chose comme ça. Souvenez-vous simplement de ce cou, mais c'est très important pour le widget. Et je suppose que par rapport à une boîte d'alerte, laissez dialoguer v utilisera plus fréquemment le snack-bar dans notre application plus tard. Donc, c'est tout. Pour ce module. Nous avons appris comment utiliser le texte va visiter comment récupérer sa valeur, comment valider, puis quelles sont les propriétés du champ de texte ? Et puis Andy et nous avons découvert ces deux nouveaux widgets, qui sont la boîte de dialogue d'alerte et le snack-bar. Dans le prochain module, nous allons commencer un nouveau sujet. Tilden. Continuez simplement à vous entraîner. 32. Comprendre les futurs: Bonjour, bienvenue dans le nouveau module où nous discuterons de la programmation synchrone. Donc, si vous êtes nouveau dans ce concept, vous pensez peut-être à ce qu'est un synchrone ? Si vous voyez de près ? Tout simplement d'une manière normale d'écrire des codes, les codes sont exécutés ligne par ligne. C'est de haut en bas. Et jusqu'à ce qu'une fonction complète l'exécution. La fonction suivante doit attendre. Il attendra donc que cette ligne de code soit exécutée et elle passera à la deuxième ligne. Mais dans la programmation asynchrone, nous avons mentionné les fonctions qui peuvent prendre du temps à s'exécuter et attendre la fin du terrain d' intégration sans arrêter l'exécution du prochain morceau de code. De cette façon, l'exécution parallèle du code est réalisée. Supposons simplement que vous téléchargiez un fichier sur la base de données, sur le serveur. Donc, jusqu'à ce que le fichier soit volumineux et l'exécution peut prendre un certain temps. Ainsi, dans les flacons que phi est en cours de téléchargement, vous pouvez également naviguer ou faire d'autres choses dans l'application. Vous n'avez donc pas besoin d' attendre qu'il atteigne 100 %. Il s'agit donc d'un très bel exemple, d'autres exemples différents. Alors, quand nous le ferons pratiquement. Alors, à ce moment-là, vos doutes ou vos concepts seront plus clairs et vous le comprendrez correctement. C'est ça. Donc, lorsque nous parlons de programmation asynchrone dans ces deux termes qui nous viennent à l'esprit, notre avenir et nos flux. Voici donc les deux types de programmes synchrone. Vous pouvez le dire. Nous en discuterons un par un. Tout d'abord, nous allons discuter de ce qui est un avenir. Donc, si votre chaise est simplement son nom. La dette est que les données arriveront à l'avenir. Imaginez que nous demandions des données à partir de la base de données et que le résultat soit renvoyé au bout de quelques secondes. Donc définitivement lieu. Démarrez votre application Instagram ou Facebook. Il faut une ou deux secondes pour rafraîchir votre flux. Donc, le temps mort, vous pourriez être capable de faire quelque chose, mais vous ne l'êtes peut-être pas. C'est à eux de décider, mais c'est un exemple d'avenir. C'est-à-dire que les données seront intégrées dans un avenir proche. Et c'est une garantie que quelque chose viendra de la fin. Soit c'est une donnée, soit une valeur nulle. S'il n'y a pas de données, suffit de se souvenir de ce concept. C'est ça. Donc, maintenant, nous comprenons ce que notre avenir est le moment. Nous saurons comment définir l'avenir. Si vous, Chad est défini exactement comme un fonctionnement qui, mais nous utilisons juste l'avenir comme préfixe, préfixe. Vous pouvez voir ce type de renvoi de type de données. Si vous souhaitez conserver le type de retour de la fonction, vous pouvez écrire ce futur puis taper I que cette fonction renvoie une sorte de chaîne, booléenne ou nulle. C'est-à-dire qu'il ne retourne rien, mais il fera quelque chose. Cela dit, maintenant, nous savons comment, quel est notre avenir, comment définir une caractéristique. Maintenant, c'est l'heure. Nous savons également comment utiliser l'avenir dans notre programme. Il existe deux façons d' exécuter un futur l'aide de Dan catch et d'async. Donc, les événements futurs que je demande généralement sur le réseau sont des opérations d'entrée-sortie, c'est-à-dire à partir de votre propre appareil. Il sauvegardera quelque chose ou il va récupérer quelque chose. Mais ici, nous allons simuler notre fausse demande de réseau en utilisant Future dot différé, ce qui nous aidera à comprendre le concept sans appeler une API réelle pour le moment. Parce que dans le prochain module, nous travaillerons avec des données réelles, qui proviendront d'une API dédiée. À ce moment-là également, nous utiliserons les contrats à terme. Mais dans le but de comprendre le concept, nous allons simplement simuler ou simuler un scénario de mort dans notre application. Ce point futur retardé prend deux arguments à l'intérieur. Donc, pour l'exécuter, nous devons passer deux arguments. première est la durée, qui spécifiera le temps nécessaire à l'exécution. Et le deuxième argument est une fonction qui doit être exécutée une fois cette durée terminée, est terminée. Maintenant, assez avec la partie théorique, vous pensez peut-être, accord, j'ai compris quelque chose, mais il y aura beaucoup de doutes. Pour éclaircir ces choses. Faites ressortir votre éditeur de texte. Dans le fichier feuille, je vais créer un nouveau fichier de dot-point d'écran futur. Ici. Comme toujours, le matériel d'importation a une visite avec état du futur écran. Ensuite, il suffit d'échafauder la partie d'application. Alors, je vais juste donner l'avenir. D'accord. Maintenant dans le corps, diriger le service et la télévision, puis l'enfant ayant un bouton surélevé. Et dans ce texte, vous pouvez simplement dire : Cliquez ici. C'est ça. Maintenant, allez à la moyenne et faites ce futur écran votre écran par défaut , fichier principal par défaut. D'accord. Oui, nous avons cette page. Maintenant, ce que nous allons faire, c'est que nous allons créer une fonction qui sera un avenir. Il suffit de créer un vide futur. Il ne retournera rien pour l'instant. Donnez-lui ensuite le nom de Obtenir des données et de l'IA. Ensuite, ce que nous pouvons faire, c'est utiliser Future dot retardé compte. Reportez-vous à la section Méthode retardée des points futurs pour simuler un appel réseau. Maintenant, vous entendez que les données devraient apparaître au bout de trois secondes. Et qu'est-ce qui aurait dû être ici ? Que devrait-on faire ? Ce qu'il faut faire, c' est qu'il faut imprimer. C'est un flottement. Développeur. Car ici, le premier argument était la durée et le second argument ou comme une fonction qui doit être exécutée après le retard de ce point Future. dynamite se fait le deuxième district. Et la prochaine ligne de code que nous allons écrire ici est une ligne de code aléatoire. Imaginez, rappelez-vous simplement cette chose. Et comme c'est un avenir, il devrait être synchrone. Il faut y écrire un évier. C'est une chose dont il faut se rappeler tout le temps que ce flottement doit savoir que cette fonction est une fonction asynchrone. C'est ça. Maintenant, copiez ceci, obtenez des données, appuyez sur Exécuter. Maintenant. Maintenant, il suffit de sauvegarder aussi si vous le souhaitez. Vous pouvez avoir, encore une fois, deux avenirs juste par souci de compréhension et vous donnera une seconde fin en dessous de 12 secondes. Si vous avez envie, vous pouvez simplement mettre en pause la vidéo et essayer comprendre ce code encore et encore. Oh, d'accord. Maintenant, si nous voyons notre code de haut en bas ici, l'ID utilisateur devrait passer en premier. Alors, c'est un développement flotté, c'est les données de l'utilisateur. Et puis cette ligne de code aléatoire est la dernière ligne. Mais lorsque nous cliquons sur le bouton, voyez la première chose qui est exécutée ou imprimée était une ligne de code aléatoire. Alors ça, hé, c'est inondé le développeur. Et enfin, l'ID utilisateur. Vous pouvez donc voir ce futur. Qu'est-ce qu'un avenir ? Autrement dit, cela prendra un certain temps de congé de deux ou trois secondes. Mais après cela, la valeur, nous obtiendrons la valeur ou le code sera exécuté. Mais ça ne s'arrête pas. C'est donc ce qu'il n'a pas attendu trois secondes pour s'exécuter. Il est simplement allé directement imprimer une ligne de code aléatoire. Et il vient d'exécuter cette ligne de code. Cela nous exécute donc de manière synchrone, mais il y a un problème. d'autres termes, le nom d'utilisateur ne doit être récupéré qu'après l'ID utilisateur. Cela signifie que nous devrions attendre l'exécution d'une fonction. Imaginez simplement s'il s' agit de votre application Instagram, alors lorsque l'application appelle la base de données pour obtenir les informations de l'utilisateur, agit de l'ID utilisateur. Après cela, seul l'écran d'accueil doit apparaître avec ces détails. Sans les détails, il devrait attendre et non, et ne devrait pas passer à la ligne suivante. À cette fin. Nous utilisons ce Dan Catch. Donc, utiliser cette capture signifie qu'après cette durée, ces contrats à terme sont terminés, alors seulement la deuxième ligne de code ne fait que la deuxième chose. Il suffit donc d'attendre et d'essayer de comprendre. Dot Dan est attaché à la toute fin de la fonction. Donc ici, avant ce point-virgule, je cliquerai simplement sur point, puis je verrai qu'il y a quelques choses et nous utiliserons le point point-point. Donc, ce que cela signifie, c' est que le futur devrait être exécuté et cela prendra trois secondes. Après trois secondes lorsque ce sprint est terminé. Ensuite, sur le Likoud, à cette ligne de code, c'est tout. Et puis l'attrape et gagne. Si lors de l'exécution de cette fonction, si quelque chose, une erreur ou quelque chose a mal tourné, alors ceux-ci devraient, pour l'instant, imprimer les points qui ont été ajoutés. Mais généralement, nous donnons un commentaire à l'utilisateur à l'aide d' un snack-bar ou d'une boîte d'alerte. Donc, si vous vous souvenez de la sortie précédente, il s'agissait d'une ligne de code aléatoire au début, puis déteste la Floride puis l'ID utilisateur. Mais maintenant, nous voulons un identifiant utilisateur. Cette ligne de code aléatoire s'exécutera en premier car c'est un avenir et cela prendra un certain temps. Donc oui, ça ne va pas attendre et aller directement. Mais vous pouvez voir dans cette sortie que l'ID utilisateur, nous avons l'ID utilisateur et ensuite seulement nous avons les détails des utilisateurs. Nous avons donc mené avec succès, écrit une future fonction au théâtre et appris à peser ou à utiliser l'erreur de capture tout en travaillant avec l'avenir. J'espère que vous avez compris le concept. Si vous avez des doutes, je vous suggérerai de faire preuve de patience et de Vig. Parce que dans les deux ou trois prochains modules, la fin des trois modèles, vous aurez certainement tous vos doutes clairs car ce n'est qu' un exemple très fictif. Mais lorsque nous construisons une application réelle, vous allez flétrir. Ok, pour cette raison, pendant que nous le sommes, pendant que vous apprenez que ces choses le sont, c'est le scénario d'utilisation pour 10. Donc, c'est tout. Au cours de la prochaine session, nous en parlerons. Nous parlerons de cet évier et nous attendrons. Parce que l'utilisation de Dan Cage et l'utilisation de l' asynchrone et de l'attente font la même chose, mais ils sont loin. L'écriture de code est différente. C'est ça. J'espère que vous vous entraînez et que vous vous entraînez beaucoup. On se voit dans la vidéo suivante. 33. Concept d'attente Async: Donc, dans cette session, nous parlerons de mot clé asynchrone attente tout en utilisant un futur. Au cours de cette session précédente, nous avons appris à les utiliser, et cela fonctionne définitivement bien. Mais il existe également une syntaxe alternative que beaucoup peuvent être beaucoup plus lisibles et aussi pour éviter plusieurs chaînes de cage de dengue, nous utilisons un mot-clé de synchronisation. Ensuite, notre nom de fonction, et ajoutez un mot-clé d'attente avant tout ce qui nécessite un certain temps pour l'exécuter. Par exemple, notre demande GET ou ce futur a été retardé. Maintenant, tout ce qui attend après cela s'exécutera lorsque la valeur aura été renvoyée. Ce que je veux dire par là, c'est que vous pouvez voir la syntaxe. Nous avons ce nom futur et futur. Ensuite, cette fonction a ce mot-clé, ce qui signifie simplement que cette variable d'impression ne fonctionnera que si ce rendement financier futur de cette valeur ou non. Essayons donc. abord, vous voulez, vous pouvez le faire avec le même exemple si nous le voulons. Maintenant, j'ai cette fonction à l'extérieur de dix heures et je vais l'enlever. Maintenant. Supposons que cette fonction renvoie un ID de 1 et que V ait cet identifiant stocké dans une variable appelée ID utilisateur. Mais maintenant, mais maintenant ce truc est V1, cet ID utilisateur, et mettez-le ici. D'accord ? Donc, si nous le faisons maintenant, définitivement, cela montrera des ajouts ou quelque chose comme null. Si, hay, sa future instance utilisateur est un futur qui signifie que la valeur n'a pas été stockée dans cette variable d'ID utilisateur. Nous devrions attendre. Et voici le poids du mot-clé, ce qui signifie simplement cette fonction. Une fois cette fonction exécutée , le code leader ira sur cette ligne. Maintenant, ce que vous verrez, c'est que lorsque je clique sur ce bouton, ce code de ligne aléatoire n'est pas exécuté. D'abord. Ceci est exécuté. Ensuite, parce que c'est synchronisé, nous n'avons pas dit d'attendre ici. Et maintenant, cela a cette valeur de 1. Mais ce concept est très, très, très important car lorsque nous construisons avec Firebase et des bases de données, l'avenir sera utilisé tout le temps que je suis. C'est pourquoi il faut le comprendre. Cette fonction d'attente attend clairement le mot-clé que je dirai. Maintenant, vous allez dire non, je veux aussi attendre cela. Et enfin, les guillemets doivent être exécutés. Il suffit donc d'écrire une fonction de poids. Avant cette fonction. Et maintenant, vous verrez le changement de sortie. Premièrement, ID utilisateur, deuxièmement, c'est flottant. Et puis une ligne de code aléatoire. Parce que nous avons notre candidature à Whittier. ici là, ne passez pas à la ligne suivante. Il s'agit donc d'un concept très important. S'il vous plaît, essayez de le pratiquer à nouveau chez un enfant. Maintenant, vous vous demandez peut-être ce qui se passera s'il y a une erreur. Pour cela, nous utilisons ce bloc try catch pour détecter toute erreur réseau. Et vers ces choses ici, c'est tout. Et dans la prise si vous le souhaitez, vous pouvez simplement amener dirigé. Parce qu'auparavant, nous l'avions et l'attrapons. Mais maintenant, lorsque nous utilisons async wait, nous devrions également utiliser ce bloc try catch. Et sink ne signifie pas seulement que vous devez créer ce type de fonction informatique distincte. Maintenant, supposons que nous ayons cette impression. Deuxième fonction. Supposons. Que va-t-il se passer maintenant ? Lorsque je clique ici, voir que la deuxième fonction est exécutée en premier. Et puis cela suscite le doute parce que Flutter sait que c'est un avenir. Donc, il n'a pas attendu ici et est allé à cette ligne de code. Dans ce scénario. Encore une fois, si vous dites non, je veux que les données soient exécutées d'abord, puis sur lèvre, imprimez cette deuxième ligne de code de fonction. Encore une fois, vous devez utiliser un évier ici et un poids ici. Examinez maintenant votre sortie. Et nous avons pu l'utiliser, c'est aussi une fonction, et c'était aussi une fonction. Vous devez donc comprendre que vous n'avez besoin que d'une fonction pour que nous puissions travailler. Maintenant, cette ligne est exécutée en premier et voyez, elle a été exécutée à ce dernier moment. J'espère donc que vous avez bien compris le concept d'asynchrone, attente et d'avenir. Parce que ce concept est si important que nous doutons de ce concept, vous ne seriez pas en mesure de travailler sur d'autres applications. Et ne comprenez pas, ne soyez pas submergé par ça. Parce que je sais que c'est un concept très nouveau si vous êtes nouveau dans cette boîte de programmation. Et si vous n'avez pas tout compris, c'est très bien. Parce qu'en tant que débutant, je comprends que vous aurez un certain doute. Vous devrez vous entraîner beaucoup, mais finalement vous l'obtiendrez. C'est tout pour aujourd'hui. J'espère que vous apprécierez nos séances photo. Et aussi lorsque vous ne regardez pas nos vidéos, je vous fais simplement confiance que vous pratiquez vous-même. Et Q. 34. Quels sont les flux: Bonjour. Au cours de cette session, nous parlerons de flux. Nous avons déjà discuté de ce qui est un avenir, mais maintenant c'est le nœud Time V, le deuxième type de programmation synchrone que ces flux diffusent. Donc, lorsque nous utilisons des flux, nous avons beaucoup de valeurs qui nous sont récupérées et honnêtement, et au lieu d'ajouter une connexion une fois, comme à l'avenir, nous pouvons la rendre ouverte et prête à recevoir de nouvelles données pour entrer. simplement, tout changement se produit ou toute nouvelle donnée est insérée, elle se reflétera à la fin. L'avenir n'a qu'une seule réponse, mais le flux peut contenir un certain nombre de réponses. Donc simplement, je voudrais dire que lorsque nous utilisons un avenir, si quelque chose change déjà connu notifier ou un nouveau message apparaît, un utilisateur doit actualiser cette page ou cette application. Mais lorsque vous utilisez des flux, c'est en temps réel. Autrement dit, tout changement de données, leur base de données sera directement reflétée dans les dettes de votre application. C'est. Vous n'avez pas besoin d'avoir, vous n'avez pas à penser à autre chose. C'est là la différence fondamentale. Dans le prochain module, nous parlerons plus pratiquement des flux parce que nous utiliserons Firebase. Ici, nous allons encore simuler notre faux événement qui renvoie un nouveau message toutes les quelques secondes, juste pour vous faire comprendre ce concept. Il y a donc quatre étapes à suivre. Création de flux, ajout de données à un flux, écoute d'un flux, puis fermeture d'une chaîne. Faisons-le pratiquement. Sortez votre éditeur de texte et créez un nouveau fichier appelé stream. Capture d'écran sombre. Encore une fois, le strict minimum dont nous avons besoin, n'est-ce pas ? C'est très bien. Je vais utiliser le moins rigide car l'interface utilisateur n'a pas été modifiée. Stream, écran, dense, échafaudage, Dann die flux de texte Dann die Daten. Maintenant, ce que nous allons faire c'est simplement créer un flux. Et pour créer ce flux, nous devons prévoir un contrôleur de flux, qui sera utilisé pour contrôler ce flux. Stream. Le contrôleur de flux est dû à cette étape. Et cela est automatiquement importé car nous utilisons des flux et impairs. La deuxième étape consiste à ajouter des données au flux. Pour cela simplement, créez une fonction appelée flux de données. Et ici, vous pouvez avoir une boucle for de int I est égal à 0, je moins de 4, je plus, plus. Et puis le contrôleur de flux Dot ajoute. Vous avez eu le message. Et ensuite, je vais attendre deux secondes ici. Ensuite, seule la boucle FOR s' exécutera à nouveau. Il y a quelques secondes, c'est tout. Rien d'autre. Maintenant, dans le corps. Allons avoir un soulagement, mais c'est fait. À qui l'éclat ? Lorsque nous cliquons pour diffuser. Ensuite, dans l'ensemble, définissez-le par défaut. Écran et reconstruisez simplement ou la statistique. Reportez-vous à la section. Vous avez ce flux. Et nous allons juste le rendre centré. D'accord. Maintenant, dans ce flux de données, je semblerai, s'il vous plaît , commencez à écouter. Do, c'est l'arbre. Cela signifie que l'écoute signifie que de nouvelles données arrivent. Chacun doit être imprimé. Je vais simplement imprimer des données. Et les données de chaîne que j' attribuerai à cette fonction. Je sais qu'il y a beaucoup de choses à comprendre ici, mais vous pouvez simplement voir des marches de poussière. Tout d'abord, nous créons un nouveau flux. Le deuxième était l'ajout de données au flux. Fatigué était en train d'écouter le flux, qui signifie simplement quoi ? Cela signifie simplement, que nous avons commencé à connecter que c'est vrai, c'est essentiellement comme une rivière. C'est à ce moment que vous en commencez un. Si, si le point de départ de la tâche n'est pas fermé , ces données ou l'eau commenceront à couler continuellement jusqu'à ce que vous le bloquiez, c'est aussi simple que cela. Bon, cliquons sur ce bouton. Vous avez reçu le message. Vous avez reçu le message C3, 4, quatre fois qu'il est imprimé parce que nous avons ces quatre. Et si vous pensez non. Je vais donc écrire ici au bout de deux secondes et il va simplement imprimer, lire. Kay ? Essayons encore une fois. Désolé, c' est parce que c'était un flux. Vous devez donc le redémarrer. Parce qu'il a déjà commencé à écouter. Vous ne pouvez pas le faire encore et encore. vois que vous avez reçu le message. Lire. Il faut lire un message, il faut le taux de messages. Ici, les données nous circulent continuellement. J'ai besoin que le changement ait été dévié sans que nous changions, redémarre l'application. Ceci est fait le sens du flux. C'est ça. Vous pensez peut-être, que se passe-t-il si je sais que les données sont entrées ? Donc, si d'autres données sont saisies ultérieurement, elles seront également imprimées. Ce que je dis, c'est qu' on a un bouton d' action flottant. Karité. Je vais simplement écrire, ajouter un article sur site. Je vais simplement dans ce contrôleur de flux, nous ajouterons que vous avez une nouvelle défécation de nœud. D'accord. Voyons maintenant. Ici, je n'ai écrit aucune impression ou quoi que ce soit, mais comme il est à l' écoute, j'ai déjà écrit ce code et l'exécute. Comme si je clique dessus, il a commencé à écouter. Maintenant, une fois que tout est terminé, si je clique sur Ajouter, voyez que vous avez une nouvelle notification. Nous n'avons donc pas besoin d'écouter à nouveau car la connexion était déjà ouverte et en avait besoin, qui circule à l'intérieur de ce flux sera sortie. En termes simples, imaginez que vous avez vos messages sur la barre de notification ici. Si quelqu'un détecte votre nouvelle notification, notre message, ce nombre augmentera de 123. C'est donc le concept de retenue. En termes simples, quelle est la différence entre le futur et le flux ? Futures s' exécute une fois qu'un état la base de données et l' introduit dans cette connexion terminée. Si quelque chose change dans la base de données, l'utilisateur doit actualiser cette page ou doit redémarrer son application , seule une nouvelle demande future sera envoyée. Mais dans le cas du freestream, quand il va demander les données, il ajoute une connexion. Quoi, et dans ce cas, si cette valeur ou si quelque chose change dans la base de données, elle passe directement de la base de données à l'application. Sans rafraîchissement de l'utilisateur ni quoi que ce soit. Il se mettra à jour automatiquement ici. J'espère que vous avez les bases claires. Et aussi avec l'exemple réel que nous ferons dans les prochains modules. Mais jusque-là, profitez des bases de la théorie que nous apprenons. Merci. 35. Widget FutureBuilder et StreamBuilder: Bienvenue de retour. Dans cette session, nous parlerons d'un nouveau widget appelé Future Builder. Et il s'agit essentiellement d'une visite avec des aides pour faire face à l'avenir. Un avenir quand cela supprime une partie du code que nous devons écrire lorsque nous récupérons quelque chose de ce réseau, c' est-à-dire de la base de données ou du serveur. Supposons que vous souhaitiez récupérer des données de la base de données au lancement de l'application et afficher un spinner de chargement jusqu'à ce que plus tard vienne, dans ce cas, l' avenir sera très pratique. Ce n'est pas comme des lectures mortes. futur ne pourra pas effectuer la tâche, mais cela prendra beaucoup de temps est un peu plus de code. Vous devez faire un état défini et tout. Mais pourquoi faire toutes ces choses alors que nous avons ce rejet génial avec nous ? Il est donc renvoyé comme n'importe quel autre widget. Il accepte deux paramètres. L'un est futur et le second est un constructeur. Et le constructeur prend également une fonction qui a deux paramètres. L'un est les contextes, qui est par défaut, et le second est instantané, qui n'est qu'un nom de variable. Mais c'est très important car il contient les données renvoyées par la fonction d'entité. Vous pouvez donc voir ici la syntaxe, simplement futur constructeur. Ensuite, le futur est la fonction qui revient à l'avenir. Et ce constructeur, il renvoie un widget à l'intérieur, mais c'est une fonction. Faisons-le pratiquement pour que vous le compreniez mieux. Allez sur le futur écran. Et ce que nous pouvons faire c'est que nous pouvons réintégrer cette fonction. Je viens de le faire pour des tests. Ayons une fonction future appelée obtenir le nom d'utilisateur. Et ce sera la même chose parce que c'est l'avenir. Définissons maintenant une variable. Chaîne finale. User est incroyablement similaire à Future dot d laid. Nous allons avoir une durée de deux secondes. Et puis j'ai une fonction qui renvoie essentiellement la valeur de Bill Gates. Tessa Violet, la variable utilisateur, puis nous retournons cet utilisateur. C'est maintenant un futur qui renvoie une valeur de chaîne. Maintenant, cet avenir est revenu. Nous devons le montrer dans notre corps, allons tout enlever et avoir un avenir. Avec nous. Une erreur de faute de frappe. Ce futur constructeur, qui est le premier paramètre est futur, que nous devrions attribuer à ce nom d'utilisateur get. Et deuxièmement. Et le second est constructeur, qui est une fonction et il accepte le contact non l'exposition nous donne un contexte et un instantané. Et il a le type de données de l'instantané de synchronisation. Donc 10. J'espère que vous l' avez compris. D'abord. Nous avons écrit ce futur widget Builder. Nous l'affectons à une vidéo future. Maintenant, les choses importantes, le CMS, qui est le rôle de cet instantané. Tout d'abord, nous devons vérifier si le point d'instantané contient des données. Si c'est plus grand que, c'est très bien. D'ici là, nous montrerons quelque chose comme un indicateur de chargement. Les événements peuvent-ils simplement apprendre l'indicateur de progrès. Cela va donc s'exécuter jusqu'à ce moment-là. C'est ce 2 secondes, la première à la deuxième. Donc, jusqu'à ce moment-là, nous devons absolument montrer quelque chose à l'écran. Et nous utiliserons ce widget appelé indicateur de progression circulaire. Supposons maintenant que nous ayons des données, alors nous reviendrons simplement. Chez cet enfant, nous aurons un widget texte. Nous allons générer des données ponctuelles, qui se trouvent à l'intérieur de l'instantané. Données instantanées. C'est ça. Essayons tout seul. Nous commençons désolés, je veux dire, nous devons attribuer ce futur écran. Voyez ce chargement et indiquez qu' il y a eu deux secondes. Ensuite, nous avons la valeur Km, qui est renvoyée par la fonction future. J'espère donc que vous avez compris le futur constructeur. Plus important encore, vous devez enquêter dans la capture instantanée car est cette chose que nous utiliserons pour manipuler nos widgets. C'est le fichier FASTA qui affiche un indicateur de chargement , puis affiche un affichage ou on met ces données. C'est ça. Donc oui, vous pouvez revoir le code ici. Ensuite, nous avons fait un StringBuilder. Stringbuilder fonctionne de la même manière qu' un futur constructeur. Seule la différence. Il écoute continuellement ce changement et met à jour l'interface utilisateur en conséquence sans avoir à actualiser ou à reconstruire notre écran. Maintenant, StringBuilder prend également deux paramètres, c'est-à-dire trim et un constructeur. Maintenant, construisez également qui prend une fonction qui a deux paramètres, contextes identiques à ceux par défaut. Et l'instantané n'est qu'une variable contenant les données. Essayons encore une fois. Accédez à l'écran du flux. Plus tôt que nous créons, nous avons créé un avenir fictif. Maintenant, nous allons créer un flux fictif, stream. Mon flux. Il ne le verra pas, cela sera considéré comme un truc car comme il s'agit d'une chaîne à l'avenir, nous avons ce mot-clé de synchronisation, mot clé qui le fera, qui est attribué si c'est un avenir. Mais quand il s'agit d'un flux, nous devons écrire un astéroïde d'évier. C'est ça. Maintenant, voici simplement, je vais simplement avoir cette fonction de boucle où je lirai ce que j'ai égal à 0. J'ai moins de 10 ans, et plus. Et je ne rentrerai pas. Je vais laisser ce que j'apprécie. Et je laisserai le futur point D lipide ici pour que les valeurs prennent un peu de temps. Notre fonction est écrite correctement. C'est simplement ce c'est dire que je devrais aller de un à neuf et que notre valeur devrait être insérée dans le flux est liée, c' est-à-dire 1, 2, 3 pour simplement flotter à travers la chaîne. C'est ça. Encore une fois, nous aurons le générateur de flux. Le premier paramètre est un flux, c'est-à-dire mon flux. Deuxièmement, il s'agit d'un constructeur qui aura un contexte, qui aura un contexte. Et en instantané. Comme d'habitude, nous devons toujours vérifier si l'instantané contient des données. Si ce n'est pas le cas, je retournerai tout d'abord un indicateur circulaire de progression. Et si c'est un danger, s'il y avait des données, alors au centre, nous avons eu un enfant. Et le texte a dit des données de point instantané point toString. C'est ça. Comme c'est un entier, j'ai fait deux chaînes ici. Et sur la page d'accueil. Maintenant, écran de flux droit. Redémarrez et vérifiez la sortie. C 12. Troisièmement, nous ne faisons rien. Nous n'actualiserons pas la page. Mais comme il est dit flux, les valeurs des données sont mises à jour en temps réel. Enfin, j'espère que vous êtes un concept de flux et que les futurs sont clairs. Au moins, vous connaissez le concept, c'est tout. Je ne dis pas que vous devriez tout savoir, ce que nous avons écrit ici et tout, car c'est peut-être un peu compliqué pour vous en ce moment. Mais croyez-moi, lorsque nous utiliserons un PS et une Firebase, tous vos doutes seront résolus. C'est tout pour ce module. Dans le prochain module, nous allons implémenter de véritables API dans notre application. Et toutes ces données proviendront du serveur. Merci. On se retrouve dans le module suivant.