When to Use Keys - Flutter Widgets 101 Ep. 4

Поделиться
HTML-код
  • Опубликовано: 10 июл 2024
  • In this episode, you will learn about key parameters on widgets: when you need keys, where to put keys in your widget tree, and which key is right for you. More specifically, you'll learn about he nuances of how keys work, discern when to use keys in your widget hierarchy, and identify the appropriate types of keys to optimize your widget-based structures.
    Chapters:
    0:00 - Intro
    0:39 - When to use keys
    2:20 - How keys work
    5:13 - Where to put keys
    6:53 - Types of Keys
    Watch other episodes in the series → bit.ly/FlutterWidgets101
    Subscribe to Google for Developers → goo.gle/developers
  • НаукаНаука

Комментарии • 247

  • @EmanueleTozzato
    @EmanueleTozzato 4 года назад +293

    Of all the videos in the series, I feel like I've started with the most complicated! :)

  • @lucasyoung9594
    @lucasyoung9594 4 года назад +37

    Angela just sent me here through her flutter bootcamp course. And seriously the Flutter team ROCKS!! Very clear, fun and helpful! Thanks Flutter Team and Emily for this video!

  • @pradeep422
    @pradeep422 5 лет назад +141

    Now we talking!!!!!! Most advanced and productive video in this series!!!!!!

    • @AlexanderArendar
      @AlexanderArendar 4 года назад +3

      ))) yeah, that should be one of first stuff in any book/tutorial, otherwise it is easy to miss the existence of topic and be surprised with strange "bugs" later :)

    • @nested9301
      @nested9301 3 года назад

      advanced ? LOL,

  • @RinaldiMeteoric
    @RinaldiMeteoric 3 года назад +6

    I'm really happy about choosing Flutter to develop my app. It has been 3 weeks since I've started learning flutter and videos like this really clarify and take out the struggle of understanding documentations. Thank you very much Flutter team.

  • @KaranChecker
    @KaranChecker 5 лет назад +205

    I to be honest didnt catch the usage entirely. The concept of the various keys .. yes, but not the usage.
    A slower more hands-on tutorial video would surely help.

    •  4 года назад +1

      @Kalsang Dorjee You shouldn't develop software if that is the level of your imagination. Passing from a static element to one you can modify programmatically is a massive change. There is no way to do that if you do not have a particular identifier for each element.

    • @hts746
      @hts746 4 года назад

      I believe some provided code would make life easier 4 everyone. But Video explains is pretty nice

    • @EmilianoKalafatic
      @EmilianoKalafatic 4 года назад +14

      @ oh oh sorry Mr 180 IQ lvl. We have different ways to "imagine" something or to understand things. Maybe you shouldn't be so "narcissistic"

    • @softwarecodecs2534
      @softwarecodecs2534 4 года назад +1

      @Kalsang Dorjee Same didn't get anything ,can you explain if you got it

    • @DarDarbl4
      @DarDarbl4 4 года назад +6

      Keys are kind of IDs, to differ elements and map between widjets tree and Element Tree, and in case of Global Key like a link to the concrete element State object, this global key provide access to the State to some Element from widget's code.

  • @subtex
    @subtex 5 лет назад +2

    Excellent video. Really appreciate some more in-depth videos like this, while still being short enough to not be an major investment in time to watch it.

  • @danvilela
    @danvilela 4 года назад +1

    Every time i watch this i learn a little bit more. Thanks Emily!

  • @noahderebe
    @noahderebe Год назад

    The most clear explanation of Keys currently online!!!!

  • @nosmirck
    @nosmirck 5 лет назад +8

    I'm not sure if I'm 100% correct, but another useful use of keys (that I've encountered) is finding specific Widgets during Widget Tests and UI Tests. Let's say you're loading the current temperature, you want to know if it rendered, you don't care about the actual reading but that the actual widget holding the value is rendered. In this case, Keys are very useful (unless I'm doing it wrong and there's another way to identify Widgets during Widgets and Integration Tests)

  • @jatingoyal6682
    @jatingoyal6682 Год назад +12

    This is the best explanation any student could have asked for, literally the best teaching video and analogy for me in my entire life, thanks a lot Emily

  • @danvilela
    @danvilela 5 лет назад +4

    Finally i could understand this! Thanks for the video, very educational!

  • @greatestuff
    @greatestuff 5 лет назад +24

    That was super helpful! I really appreciate the detailed explanation of value, global, object, unique keys. I also appreciate the comment about not using random numbers ..it really shows that they are helping people avoid common stumbling blocks. Thanks Flutter Team! Keep up great work! Love these videos. She makes a comment about the BLOC pattern at the end, I would love to see a dedicated video or series of these types of preplanned and well-polished videos on that pattern.

    • @harry356
      @harry356 2 года назад

      What problem do keys solve? I cannot make anything from this video...

    • @chrisstromberg6527
      @chrisstromberg6527 2 года назад

      @@harry356 You are not alone.

    • @akperheogheneovo4954
      @akperheogheneovo4954 Год назад

      @@harry356 actually hands on codes will have make one understand better. But the concept is something one has to be aware of not to continue debugging forever.

    • @mb77mb66
      @mb77mb66 9 месяцев назад

      No... this sucks in Flutter, this is us having to know about Flutter engine implementation details.

  • @sanketsahasrabudhe8106
    @sanketsahasrabudhe8106 4 года назад +48

    Emily Fortuna can teach instructors all over the world on how to make a video a thousand times more interesting! Great job Flutter Team! Keep more videos coming❤️

    • @gregsullivan7408
      @gregsullivan7408 Год назад +1

      Not my bag at all - I prefer a much more dry presentation - it's like she's doing an infomercial. IMHO.

    • @vicmath1005
      @vicmath1005 8 месяцев назад +1

      @@gregsullivan7408 Absolutely agree Greg.
      What a sickening drama of the presenter.
      That drama stops me from absorbing the message. I am forced to rewind at every sentence a COUPLE of times.

    • @gregsullivan7408
      @gregsullivan7408 8 месяцев назад

      ​@@vicmath1005I like the "Net Ninja" - excellent teacher/presenter

  • @tomgrin10
    @tomgrin10 4 года назад +5

    THIS WAS EXACTLY WHAT I NEEDED YESSSS

  • @AshutoshATS
    @AshutoshATS 4 года назад

    Btw, her way of explanation is just awesome. She's great with her style and ways of speaking.

  • @NextGenerationEdit
    @NextGenerationEdit 5 лет назад +1

    More in depth tutorials like that! Great video!

  • @joaopedromartins573
    @joaopedromartins573 3 года назад

    That's exactly what I nedded! Thank you guys!

  • @dkq986
    @dkq986 5 лет назад +1

    This will be really really helpful!!
    I wrote a code for this implemention before but it was really complex to change or even maintain.

  • @parosk9078
    @parosk9078 3 года назад

    honestly the best video that explain key in flutter !

  • @yamsani735
    @yamsani735 2 года назад

    This video has actually helped me to fix one of the issue I have in my application because of not properly managing the widget keys.

  • @amugofjava
    @amugofjava 5 лет назад +14

    Really helpful video as I never fully understood when to use keys.

    • @jajasaria
      @jajasaria 5 лет назад

      All i understood is that when changing list order the rest is .......

    • @xhunter91
      @xhunter91 5 лет назад

      @@jajasaria When you change a list's order of one type. They are not needed when the list has distinct types.

  • @zeccy337
    @zeccy337 5 лет назад +7

    Hey thanks so much for these videos, i'm trying to use flutter and dart for a school project and this is great

    • @gustavoalejandrocanulmena3301
      @gustavoalejandrocanulmena3301 5 месяцев назад

      What has your path as a developer been like for you? I'm learning too,
      What do you recommend I learn to follow my path?

  • @CarlitosVJ1
    @CarlitosVJ1 4 года назад

    Hi Emily! Thanks for sharing in such an understandable way!

  • @NicholasMaietta
    @NicholasMaietta 5 лет назад +1

    I'm just getting into Dart2 and Flutter. I'm just now getting into Mobile app development after 20 years of web development. I have a feeling i'll be watching many of these videos for inspiration and to help me hammer out the critical parts.

    • @guru_bro
      @guru_bro 29 дней назад

      How u doing?

    • @NicholasMaietta
      @NicholasMaietta 29 дней назад

      @@guru_bro Well, I posted my comment 5 years ago. No longer using Flutter or Dart, I grew sick of it.

  • @jagdishshetty4782
    @jagdishshetty4782 5 лет назад +2

    Great explanation !!! Thx for the tutorial !!!

  • @KlausRies
    @KlausRies 5 лет назад

    Very informative and entertaining. Awesome.

  • @YTSliv
    @YTSliv 5 лет назад +5

    Effort appreciated.
    A very simple concept but confusingly explained.
    X(),X(),... X() * 100
    Shuffle them
    X(),X(),... X() * 100
    Renderer see no change, there is no effect because things are not ordered shuffle have no meaning.
    The key prop makes
    X-1(), X-2(), ... X-100(),
    shuffle,
    X-57(),X-2(),...X-3()
    now some part changed, re-render, note X-2 will be reused in such case since the prop is the same, so a best practice is item.id and each key should be unique.

  • @ce9916
    @ce9916 2 года назад

    Awesome video content and delivery - go Emily!

  • @kentonraiford7784
    @kentonraiford7784 5 лет назад +1

    Makes sense. Thank you!

  • @saviobatista9619
    @saviobatista9619 2 года назад

    This is the most needed video ever and just found 3 years later lolz

  • @smithahn4959
    @smithahn4959 4 года назад

    good! I fix my problems thanks to this video.

  • @BotandoFogo
    @BotandoFogo 7 месяцев назад

    Very good explanation!

  • @SafdarAliShah_TimeTraveler
    @SafdarAliShah_TimeTraveler 5 лет назад

    Amazing Lecture

  • @devonedmonds9223
    @devonedmonds9223 5 лет назад +60

    Documentation for keys was not very clear. Finally some clarity!

  • @hiteshmalhotra183
    @hiteshmalhotra183 4 года назад +1

    Wow, that was like a magic, got it now. Thanks

  • @FidelGuajardo
    @FidelGuajardo 5 лет назад

    Thank you! Cool stuff!

  • @siri3359
    @siri3359 3 года назад

    Hey Emily Wonderful video, I got a doubt though :
    When new stful widget is created with the matched key and attached to padding widget instead of the old widget, do you also mean that the colour might not always be orange but some random colour every time ? Thanks in advance :)

  • @quetzalsaez2099
    @quetzalsaez2099 4 года назад

    Thank you so much, i spent hours trying to resolve a problem with a listBuilder that didn't updated the UI when i used the method "removeAt()" and it was all because of the unique Keys of the childs that where not specified

  • @gautambedi591
    @gautambedi591 Год назад

    Very nice explanation. Loved it

  • @bhojpurimashupworld
    @bhojpurimashupworld 5 лет назад

    Wow !! Interesting information for key
    Thank u mam.

  • @nevinjohn
    @nevinjohn 5 лет назад

    Saved my day!

  • @TheFlyingMonkey200
    @TheFlyingMonkey200 3 года назад +2

    Awesome video! You guys make great tutorials for Flutter!

  • @fawazjoseph878
    @fawazjoseph878 5 лет назад

    Awesome video, I was about to use keys when I didn't need it

  • @SomtoOfonagoro
    @SomtoOfonagoro 5 лет назад

    Very helpful !!

  • @ajk7151
    @ajk7151 4 года назад

    this series is very good. please try and conitnue it. thanks

  • @harry356
    @harry356 3 месяца назад

    I have watched this video 3 times, once at the start of my flutter development, once one year in, and now two years in. Still do not understand it fully and why I need it in a certain spot in my widget tree.
    I do get that flutter stores an cheap element tree to quickly look up if the tree has changed. That probably fits into L1 cache.

  • @HuuTran-rk9hk
    @HuuTran-rk9hk 5 лет назад

    nice video! It's helped me very very lot.

  • @hilmanshini_jigoku
    @hilmanshini_jigoku 5 лет назад +1

    now i have something to see here. its not boring anymore

  • @zawadi563
    @zawadi563 5 лет назад +1

    that was so educative and hey ..i dont knw why but i have seen many of your vids about flutter and i like your charming state

  • @mohamedmirghani1747
    @mohamedmirghani1747 4 года назад +1

    Coming for Maximilan Course :)

  • @faisalbahli
    @faisalbahli 3 года назад +1

    Meredith from the office to flutter team, nice!

  • @alexandrostziokas
    @alexandrostziokas 4 года назад +2

    The perfect explanation :-) Thank you

  • @Gentleman217
    @Gentleman217 2 года назад

    I can't tell how relaxed i am after watching this

  • @candlelight4693
    @candlelight4693 4 года назад +3

    It's keeeeeeeey tiiiiiiiiiiiiiiiiiiiiiiiiiiiiiime : ) like It !!

  • @djminikin
    @djminikin 5 лет назад

    Thank you!

  • @mustafagamal672
    @mustafagamal672 4 года назад

    Wooooow I like your presentation so much.

  • @MarkRonnelCamilon
    @MarkRonnelCamilon 5 лет назад

    Very well said.

  • @ysp1.2
    @ysp1.2 4 года назад

    Excellent.Thank you, Emily!

  • @phamucmanh1750
    @phamucmanh1750 2 года назад +1

    Amazing, just to being persist and enlightenment

  • @batuhankrbb
    @batuhankrbb 3 года назад

    She is the best instructor

  • @ivanyoed
    @ivanyoed 3 года назад

    Great vid 👌

  • @dhruvinprajapati4345
    @dhruvinprajapati4345 Год назад

    thank you for expansion, that's help me on project

  • @govindkothari7989
    @govindkothari7989 4 года назад

    nice one!!

  • @ivicasakota1642
    @ivicasakota1642 5 лет назад

    You're natural! Great job!

  • @tylorvan6786
    @tylorvan6786 5 лет назад

    wonderful!

  • @Zhuinden
    @Zhuinden 5 лет назад

    Ah. So for proper state restoration, we'd need to be able to persist both the navigation route list, AND the key hierarchy. Interesting video.

  • @mahmud-ahsan
    @mahmud-ahsan 4 года назад

    Thank you great discussion about keys. Keys are a bit complicated topic specially when to use. Once one started developing apps he will understand how and when to use keys in widgets.

  • @jarvanmo2908
    @jarvanmo2908 5 лет назад

    Saw you on the GDD , contributor of Fluwx.

  • @scalybur
    @scalybur 5 лет назад

    Well done

  • @sergey_molchanovsky
    @sergey_molchanovsky 2 года назад +3

    8:30 we need a code example.
    I'm struggling with GlobalKey, getting an error "multiple widget in the tree with the same GlobalKey".

  • @shirosanchez265
    @shirosanchez265 Год назад

    THANK YOU SO MUCH!!!!!

  • @heshansandeepa9471
    @heshansandeepa9471 Год назад

    Very nice

  • @user-tv4kh4pc7s
    @user-tv4kh4pc7s 4 года назад

    Nice show. Girl awesome story teller

  •  5 лет назад

    With a good community and team Google flutter will succeed . 👁👅👁

  • @devithuotkeo
    @devithuotkeo 5 лет назад

    Yayyy this is soooo gooood

  • @husseinwalidqudsi2776
    @husseinwalidqudsi2776 4 года назад +5

    Thank you, here's the link for the simple PositionedTiles app: medium.com/flutter/keys-what-are-they-good-for-13cb51742e7d.

  • @elmeroranchero
    @elmeroranchero 3 года назад

    when displaying the same widget in different views why do we need a global key? does the element tree have two instances of the same widget? or is it the same element tree for the whole application.

  • @GALONE7
    @GALONE7 4 года назад +1

    Please correct the subtitles at 4:59 from "staple widgets" to "statefull widgets".

  • @MistaWu
    @MistaWu 4 года назад

    Thank you...

  • @ehsanhasin8092
    @ehsanhasin8092 Год назад

    thank you

  • @teukuyusransyahtandi723
    @teukuyusransyahtandi723 4 года назад +14

    5:29 my sleepiness goes away.

    • @JoaoVictor-ir3yu
      @JoaoVictor-ir3yu 4 года назад +1

      kkkkkkkk I was scared

    • @noway4517
      @noway4517 4 года назад

      Good tactic to use in the middle of a speech to get the attention of the audience back. But I don't know whether that would be a good idea for the presentation of a university thesis. o0

  • @Trancecend
    @Trancecend 5 лет назад +2

    I need a practical example that details how the GlobalKeys use case at 8:31 is supposed to be structured.

  • @LaunchpadMediaGroup1
    @LaunchpadMediaGroup1 5 лет назад +1

    Can you get Emily to explain the entire flutter system from A-Z using this format? Thanks

  • @KevinSheppard
    @KevinSheppard 5 лет назад +9

    Speaking of keys, who did the keying for this video? I can see the bluescreen you recorded in front of

    • @mohddarishkhan4819
      @mohddarishkhan4819 5 лет назад

      @@emilyfortuna2262 hahaa😂

    • @KevinSheppard
      @KevinSheppard 5 лет назад

      @@emilyfortuna2262 I get the (totally unnecessary) sarcasm, but I'm just saying it wasn't up to the high standard I'm used to seeing from the channel. Upon review, though, it looks like it was your ear rings. My mistake.

  • @danilyusupov5364
    @danilyusupov5364 4 года назад

    Yeey, now I know the rocket science 🤣🚀

  • @marxman1010
    @marxman1010 3 года назад +3

    Here is the source of the PositionedTiles example.
    gist.github.com/efortuna/e7c19ba78cbeda0ff2772060bc639b6d
    And explained here.
    medium.com/flutterdevs/keys-in-flutter-104fc01db48f

  • @sanjeevnarayan7367
    @sanjeevnarayan7367 4 года назад

    Thanks

  • @OumSaokosal
    @OumSaokosal 5 лет назад +5

    I spent 8:27 minutes to find PageStorageKey, which is very important.

    • @jajasaria
      @jajasaria 5 лет назад

      can you explain why this is so important?

  • @emine4584
    @emine4584 3 года назад +2

    Please share with us source code of video , it becomes more understandable .Thank you

  • @usgqgwa
    @usgqgwa 5 лет назад +1

    It's Key Time!

  • @WorstDeveloper
    @WorstDeveloper 4 года назад

    Do you always have to pass unique keys manually?

  • @vladarskopin3314
    @vladarskopin3314 2 года назад

    Is it ok to use static fields sometimes instead of keys? Like if I store information in a static class with a static variable. I'm a complete noobie btw so this is just a wild guess

  • @muhammadasif6425
    @muhammadasif6425 5 лет назад

    keep it up..

  • @balaji-venkatraman
    @balaji-venkatraman 4 года назад

    Is there any code snippet available to check?

  • @vinayak186f3
    @vinayak186f3 3 года назад

    My brain just exploded 😮

  • @AaronSurty
    @AaronSurty 5 лет назад

    Love the energy of this video! All Google developer videos should be this way. :) Is there a link to the change colors app you created for this demo?

  • @hakimhauston9040
    @hakimhauston9040 2 года назад

    Anybody knows the details and explanation of the problem in the Hacker News app mentioned briefly @ 1:06 ? I was facing something like that but not sure if it is similar issue

  • @coroutinedispatcher
    @coroutinedispatcher 5 лет назад

    So on the case of stateful widgets they do swap, but just the state can't be handled.

  • @MikeDownes
    @MikeDownes 5 лет назад +5

    really useful thanks, well scripted too .. \o/ ..

  • @moazelsawaf2000
    @moazelsawaf2000 4 года назад

    Thanks...