The Firebase Realtime Database and Flutter - Firecasts

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ส.ค. 2024
  • Let's add the Firebase Realtime Database to your Flutter app! This tutorial will cover basics like installing the library, writing and updating data, and reading your data in realtime, and then it will cover other important topics like using the Realtime Database with StreamBuilders, FutureBuilders, Providers, using the emulator suite, security rules, and much more!
    Chapters:
    0:00 - Introduction and our new format
    0:53 - What database should I use?
    3:47 - The Realtime Database data model
    7:35 - Installing the library
    10:23 - Writing to the database
    14:19 - set() vs update()
    17:22 - Appending nodes
    20:22 - Reading in data
    24:34 - Adding in null-safety
    25:03 - Fetching larger records
    27:44 - One-time fetching
    30:24 - StreamBuilders and FutureBuilders
    37:20 - Separating data and display logic
    40:10 - Using a Provider
    47:06 - Thinking about your data
    49:09 - Security rules
    51:57 - Using the emulator
    55:36 - The FirebaseAnimatedList widget
    58:31 - Conclusion
    Resources:
    Documentation → goo.gle/3ziSc1x
    The Database Decider page → goo.gle/37t4eJ9
    The Realtime Database for SQL developers video series → goo.gle/36NaY4U
    Getting started with Firebase on Flutter →goo.gle/3zbjF52
    Best Practices: Arrays in Firebase → goo.gle/3rkQTvY
    Firebase security rules video → goo.gle/32exFee
    Getting started with the CLI → goo.gle/3ilEILs
    Watch more Firecasts for Firebase Developers → goo.gle/Firecasts
    Subscribe to Firebase → goo.gle/Firebase
    #Firecasts #Firebase #Flutter
    product: Firebase - Realtime Database; fullname: Todd Kerpelman; re_ty: Publish;
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 146

  • @AmericanBoy1776
    @AmericanBoy1776 3 ปีที่แล้ว +25

    Life-changing tutorial. The presentation is clear and simple. I like that it’s only one hour-perfect amount of time to explain this type of topic.

    • @Firebase
      @Firebase  3 ปีที่แล้ว +3

      Glad you enjoyed it!

  • @DarkChasmGamers
    @DarkChasmGamers 3 ปีที่แล้ว +27

    TODD I'VE MISSED YOU😭😭😭

  • @viacheslavromanov3098
    @viacheslavromanov3098 3 ปีที่แล้ว +3

    Awesome and comprehensive explanation with the nice examples!💪🏻That's what we developers really love ❤️Appreciate the effort, Todd 🙏🏻

    • @Firebase
      @Firebase  3 ปีที่แล้ว +2

      Glad you enjoyed it!

  • @BrianTX541
    @BrianTX541 2 ปีที่แล้ว

    Great video. I love how you include relevant use cases for your examples.

  • @UsamaKarim
    @UsamaKarim 3 ปีที่แล้ว +3

    Yes, Please! Keep it lengthy & comprehensive. We want to get all the knowledge in one place.

  • @anastariq357
    @anastariq357 ปีที่แล้ว +1

    Great work ! I rarely enjoy watching tutorial videos, but this one was 100% enjoyable.Especially the sound when you change screens :D .

  • @1daneet
    @1daneet 2 ปีที่แล้ว

    Had issues using Firebase Realtime Database until this video. I enjoyed watching it and have been able to get proper understanding of its usage which I'll proceed further by reading the documentation. I also think making a longer in depth video like this one is much better than shorter videos.

  • @Chop5chop
    @Chop5chop 2 ปีที่แล้ว

    This is great, love the long format

  • @Zizo1st
    @Zizo1st 2 ปีที่แล้ว +2

    Perfect tutorial! That's really a very informative one, I thought I am good with RTDB, but after watching this, I've realized that I've missed lots of good stuff!
    Thanks Todd

    • @Firebase
      @Firebase  2 ปีที่แล้ว +1

      Great to hear!

  • @RogiervanApeldoorn
    @RogiervanApeldoorn 2 ปีที่แล้ว +1

    I really like this kind of videos. Very good explanation! Keep up the good work!

  • @pinkasey
    @pinkasey 3 ปีที่แล้ว +3

    You make great videos. They are really fun to watch, while being very educational.
    The problem I have with Firestore is the limited querying capabilities. Compared to SQL - it's like a toy, not suitable for "real application".
    Some examples:
    1. No way to count records, without fetching them
    2. Cant query by comparing two fields of the same doc
    3. Cant query for doc which lack a field (which would be useful for maintaining a denormalized data-model)
    4. No uniq costraints
    And so on

    • @HammadKhanYT
      @HammadKhanYT ปีที่แล้ว

      Is firebase database suitable for searching data and presenting that to users? I want to store my customer data in it.

  • @mohammadnazari5180
    @mohammadnazari5180 ปีที่แล้ว

    This tutorial below my mind! Awesome work, Todd!!

  • @estranhokonsta
    @estranhokonsta 3 ปีที่แล้ว

    Nice. Many basic but certainly good things in this video.
    The addition of the optional pattern designs was cool too.
    One problem of this longer videos is that there is a greater probability of them being too (dated) specific to the software versions used in it, but i still think that it brings great value to the channel. Why worry for something that hasn't come yet? Nobody would do anything that way.
    The ideal would be to keep the two formats (short and long videos).
    And use them according to the occasion.

  • @prelude0133
    @prelude0133 3 ปีที่แล้ว +2

    I like this new presentation format and nicely explained. Thank you.

    • @Firebase
      @Firebase  3 ปีที่แล้ว

      Glad you liked it!

  • @darokadx
    @darokadx 3 ปีที่แล้ว +5

    Very good video, it even answers one of my question on StackOverFlow about how to convert DataSnapshot to a Data model object !
    Format is really nice, and explanations really clear, i was simply hoping you would cover the RTDB scaling / Sharding data but i guess this will be for another video 👌🏻

  • @maxmaeffert20
    @maxmaeffert20 2 ปีที่แล้ว

    this might be the best guide I've ever seen

  • @lasaint589
    @lasaint589 3 ปีที่แล้ว

    Finished the video woooo. It's 2328hrs on a school night ,but well worth it; the video answered a tonne of questions.

  • @justvikas
    @justvikas 2 ปีที่แล้ว

    I really like this, basic but covered many important things.

  • @sandwichtube
    @sandwichtube 2 ปีที่แล้ว +1

    Thanks for taking the time to make this video.

    • @Firebase
      @Firebase  2 ปีที่แล้ว

      Glad it was helpful!

  • @komellar97
    @komellar97 3 ปีที่แล้ว +1

    Finally some good realtime database tutorial ✊

  • @maxeem3596
    @maxeem3596 3 ปีที่แล้ว +1

    Thank you, Todd! Great tutorial! Great job!

    • @Firebase
      @Firebase  3 ปีที่แล้ว

      Glad it was helpful!

  • @drantunes
    @drantunes 3 ปีที่แล้ว

    Is any solution for write limit per second on Firestore (use Pub/Sub?)...The transaction 'batch' count 1 write on commit or N writes if the transaction contain N write operations? Thanks for the video!!

  • @CodeNight-dm2hv
    @CodeNight-dm2hv 2 ปีที่แล้ว +1

    I learned so much here. Thank you

    • @Firebase
      @Firebase  2 ปีที่แล้ว +1

      Glad it was helpful!

  • @Studi0usKidd0
    @Studi0usKidd0 3 ปีที่แล้ว +1

    This was a fantastic video!

    • @Firebase
      @Firebase  3 ปีที่แล้ว

      Thank you!

  • @UsmanTahir6
    @UsmanTahir6 2 ปีที่แล้ว +1

    Excellent Tutorial!

    • @Firebase
      @Firebase  2 ปีที่แล้ว

      Glad you liked it!

  • @ame5r
    @ame5r 3 ปีที่แล้ว +23

    make it longer, and cover more stuff. please!

  • @trainofthought5733
    @trainofthought5733 3 ปีที่แล้ว

    YEP make LONGER btw love your explanations ❤❤❤❤❤❤

  • @uditmishra5583
    @uditmishra5583 2 ปีที่แล้ว

    Best explanation on the Internet!!!

  • @-_AK_-
    @-_AK_- ปีที่แล้ว

    Your Video is very helpful and very easy to understand thank you so much for this great video and explanation ❤❤

  • @fishheadbreakroom
    @fishheadbreakroom 3 ปีที่แล้ว

    Great video

  • @JeffreyLiu8
    @JeffreyLiu8 2 ปีที่แล้ว

    Good job!

  • @engbesher7479
    @engbesher7479 ปีที่แล้ว

    amazing tutorial

  • @jmathew2011
    @jmathew2011 3 ปีที่แล้ว +4

    Ok now this video but for Firestore please!
    Adding a section for best practices, really complex queries, best practices for common data structures (user-profiles, chats, foreign-key referencing, mapping/location, JSON maptype, timestamps, etc, etc)

  • @mohammadkashif5441
    @mohammadkashif5441 2 ปีที่แล้ว +1

    very helpful video ❤

    • @Firebase
      @Firebase  2 ปีที่แล้ว

      Glad you think so!

  • @xmanreturn
    @xmanreturn 3 ปีที่แล้ว

    longer videos are needed!

  • @maxzaki5621
    @maxzaki5621 2 ปีที่แล้ว

    Thank u. I have one Question. When using push().set(), if I want to get added document key, what should I do?

  • @congtoannguyen1940
    @congtoannguyen1940 3 ปีที่แล้ว

    So which kind of way should I use to read the real time database, the Stream builder or the Provider way

  • @yulianislamprayoga
    @yulianislamprayoga ปีที่แล้ว

    Thank you for the explanation sir

  • @turtle-rabbitpark8715
    @turtle-rabbitpark8715 2 ปีที่แล้ว +1

    This is awesome!!!!!

  • @rvb6516
    @rvb6516 3 ปีที่แล้ว +1

    Love it ✨👍

    • @Firebase
      @Firebase  3 ปีที่แล้ว +1

      Thank you! 😊

  • @learningwithafen1346
    @learningwithafen1346 2 ปีที่แล้ว +1

    Very nice. Thank you :)

    • @Firebase
      @Firebase  2 ปีที่แล้ว

      Welcome!

  • @jimcomccabe3
    @jimcomccabe3 2 ปีที่แล้ว +1

    23:00 . it does not happen immediately. it takes 1 sec to replace the original text" results go here" with the downloaded string from realtime database. is there a way to show directly the downloaded string?

  • @Liosnaprod
    @Liosnaprod 2 ปีที่แล้ว

    thank you !

  • @raziel6193
    @raziel6193 ปีที่แล้ว

    This videa is amazing. Thank you

  • @vaughnnarvacan3338
    @vaughnnarvacan3338 2 ปีที่แล้ว +2

    The getter 'snapshot' isn't defined for the type 'Event'. I keep getting this error with StreamBuilder

  • @nat101yt
    @nat101yt 3 ปีที่แล้ว +3

    To me one-hour is the sweet spot.

  • @Tyrowo
    @Tyrowo 10 หลายเดือนก่อน

    love this video thank you

  • @isiakamfugale3621
    @isiakamfugale3621 2 ปีที่แล้ว

    Sir u told us one option of using futureBuilder.
    Does it allow realte update on ui??

  • @KImtOs
    @KImtOs 3 ปีที่แล้ว +2

    what about how to integrate App check with flutter ?

  • @Topbrains
    @Topbrains 2 ปีที่แล้ว +1

    Is there a way to get a copy of the code?

  • @agilmmmdov5110
    @agilmmmdov5110 2 ปีที่แล้ว

    Hi I need help . When I wrote one sentence for example name 1. Value ." I like football" I can see only one word "I" in my application how can I fix please

  • @adityavns1
    @adityavns1 3 ปีที่แล้ว +6

    When is flutter web support coming for real-time database?

    • @lkeysoft
      @lkeysoft 3 ปีที่แล้ว +1

      Much needed!!

    • @maxmaeffert20
      @maxmaeffert20 2 ปีที่แล้ว +1

      Isn't it by now?

  • @codebuddies9238
    @codebuddies9238 2 ปีที่แล้ว

    Love it

  • @ingamgavu7025
    @ingamgavu7025 2 ปีที่แล้ว

    Unhandled Exception: missingPluginException error on firebase_database
    please need help its been a week having this problem

  • @anggoran7398
    @anggoran7398 2 ปีที่แล้ว

    thanks a lott!!

  • @sultanabbas9411
    @sultanabbas9411 2 ปีที่แล้ว

    when I access orders/abc/price , does it load the other children of "abc" as well? or only orders the "price" child of "abc" ?

    • @Frank_van_Puffelen
      @Frank_van_Puffelen 2 ปีที่แล้ว

      The Realtime Database loads the path you read from and the data under it, but not the data above it. So in your scenario it'll only load the price and not any other properties of `abc`.

  • @CurryMan12345
    @CurryMan12345 2 ปีที่แล้ว +1

    What is the VSCode theme you are using?

  • @2009worstyearever
    @2009worstyearever 3 ปีที่แล้ว

    yes, make them longer and cover more stuff. with respect to your docs, this just seems better

  • @tjakemelvin
    @tjakemelvin 2 ปีที่แล้ว +7

    In 26:13 I have an error when typing "final data = new Map.from(event.snapshot.value);" saying that The argument type 'Object?' can't be assigned to the parameter type 'Map How can I solve it please?

    • @JoJo-yu7hh
      @JoJo-yu7hh 2 ปีที่แล้ว +1

      Me the same, do you already have a solution?

    • @utkusarican5520
      @utkusarican5520 2 ปีที่แล้ว

      8:28 When you back these version, you can use it. I was using last version and get same error. I couldn't fix it so I change the version of firebase_core and firebase_database

    • @tanikagulati307
      @tanikagulati307 2 ปีที่แล้ว +6

      Just use this
      final data = Map.from(event.snapshot.value as Map);

    • @BeatFreakDJs
      @BeatFreakDJs 2 ปีที่แล้ว

      Thank you, Tanika..you saved me a lot of time!

    • @chadlyalan
      @chadlyalan 2 ปีที่แล้ว

      @@tanikagulati307 When I try to access data like shown above I get this error:
      Expected a value of type 'String', but got one of type 'Null'
      I can print data and I see the giant JSON object that I'm querying but I can't access any fields from my json object..

  • @indulgewithal7526
    @indulgewithal7526 2 ปีที่แล้ว

    I have built a few streambuilders using this tutorial for guidance, but when the user hasn't yet entered the data that the stream takes, it returns the error type 'Null' is not a subtype of type 'Map', how to I get around this? All methods I have tried fail to stop this error.

    • @indulgewithal7526
      @indulgewithal7526 2 ปีที่แล้ว

      @@chicagoworkscom I ended up using shared preferences to store a local int that tracked how many times data was stored (or removed) by the user, anything above zero and it would run the stream builder, other wise a placeholder image. The problem with your solutions is it comes back with a snapshot with some data, somehow. I would of imagined they would have a better solution to this and documentation to go with it. Was also frustrating how his example should of shown this problem when the database doesn't yet have data. Appreciate you looking into it! I have had so many issues with real time data base and how it works. getting there tho!

  • @yiisuseusse
    @yiisuseusse 2 ปีที่แล้ว +3

    Min 25:50
    I can't do that... it still gives me an error
    The argument type 'Object?' can't be assigned to the parameter type 'Map'.

    • @TheAhmed710
      @TheAhmed710 2 ปีที่แล้ว +4

      Instead of:
      Map.from(snapshot.value);
      Use this:
      Map.from(snapshot.value as Map);
      This will cast the Object into a Map

    • @diptanshumahishcovers9096
      @diptanshumahishcovers9096 2 ปีที่แล้ว

      @@TheAhmed710 dayyyumn ,life saving!!!!

    • @oneplusgeek7510
      @oneplusgeek7510 ปีที่แล้ว

      ​@@TheAhmed710 thanks! but when real time db is empty i got an error : type 'Null' is not a subtype of type 'Map' in type cast.

  • @jimmyicoffee
    @jimmyicoffee 3 ปีที่แล้ว

    Why can't I choose another region for realtime db? region Australia is needed!

  • @RaadYacu
    @RaadYacu 3 ปีที่แล้ว

    more the better

  • @mohammadshamimhossain538
    @mohammadshamimhossain538 3 ปีที่แล้ว

    Good to see this lesson

    • @Firebase
      @Firebase  3 ปีที่แล้ว

      Thanks for watching

  • @ainaraziq3599
    @ainaraziq3599 2 ปีที่แล้ว +1

    type 'Null' is not a subtype of type 'String'
    The relevant error-causing widget was
    StreamBuilder
    I get this error in stream buidler

  • @zoozolplexOne
    @zoozolplexOne 2 ปีที่แล้ว +1

    cool !!!

  • @ajinkyakhobragade8557
    @ajinkyakhobragade8557 2 ปีที่แล้ว

    Is there a git repository for the project?

  • @tezelyusuf
    @tezelyusuf 2 ปีที่แล้ว +1

    Exception is thrown anyway -> The argument type 'Object?' can't be assigned to the parameter type 'Map at line 25

    • @adelnehikhare4071
      @adelnehikhare4071 2 ปีที่แล้ว

      Same problem I'm having

    • @mobiledev5295
      @mobiledev5295 2 ปีที่แล้ว

      @@adelnehikhare4071 its outdate... flutter 2.5 came in spt

  • @carlevans60
    @carlevans60 3 ปีที่แล้ว +3

    Longer, more in depth videos!

  • @vijaykumar-wq9pg
    @vijaykumar-wq9pg ปีที่แล้ว +1

    I am struggling to retrieve the data from FB realtime database, always stuckup at Unhandled Exception: type 'List' is not a subtype of type 'Map'...kindly help

  • @mhwadah
    @mhwadah 2 หลายเดือนก่อน

    Can I use flutter with firebase sql instead of firebase NoSQL?

  • @adttwo
    @adttwo ปีที่แล้ว

    Great video, but I think there should be a link in the comments to the completed code project. Having to pause the video every few seconds to compare my code to yours is frustrating and frequently leads to long trips down the rabbit hole while I try to figure out what you've done that's just off the top or bottom of the video screen.

  • @marlhex6280
    @marlhex6280 3 ปีที่แล้ว

    Short and to the point thanks. 1 to 3 min max.

  • @Eslam-Sameh
    @Eslam-Sameh 2 ปีที่แล้ว

    When will be the flutter windows and linux support?

  • @zeldax5961
    @zeldax5961 2 ปีที่แล้ว

    Hey! How to get the auto generated Unique-ID?

    • @Firebase
      @Firebase  2 ปีที่แล้ว

      Hi! You can find information about how unique identifiers work through our Firebase blog here: firebase.blog/posts/2015/02/the-2120-ways-to-ensure-unique_68

  • @PedroFonseca5
    @PedroFonseca5 2 ปีที่แล้ว +1

    Is it just me that gets a lot of errors when trying to implement the exact same code in my apps ... ?
    The videos are great, no doubt, but sometimes it just doesn't let me compile

  • @zanovis
    @zanovis ปีที่แล้ว

    Amazing overview. Maybe give a warning about set() since it can wipe your entire DB if you don't know the difference between set() and update() yet :P

  • @maronilabuni5935
    @maronilabuni5935 2 ปีที่แล้ว

    how to get the source code

  • @lovefrommemee5710
    @lovefrommemee5710 3 ปีที่แล้ว

    Finally...

  • @blessingmguni6705
    @blessingmguni6705 2 ปีที่แล้ว

    code for main dart is not clear

  • @volkankarakus8013
    @volkankarakus8013 2 ปีที่แล้ว

    why cant we use reference() now??

  • @kingstation5992
    @kingstation5992 3 ปีที่แล้ว +1

    make it longer. please!

  • @tintin537
    @tintin537 3 ปีที่แล้ว +1

    Make it longer and cover more, the more the merrier

  • @lasaint589
    @lasaint589 3 ปีที่แล้ว +3

    Flutter is only at its dawn imagine it in 3 years. Program a Space Rover

  • @ThePoignancy
    @ThePoignancy 3 ปีที่แล้ว

    the DataSnapshot object is severely underspecced, missing many methods in the official SDK like child(), hasChildren(), forEach()

  • @mars3142
    @mars3142 3 ปีที่แล้ว

    I would like more in-depth videos, but it should be a series of videos. I don‘t like to open one video to see within the description the covered topics/areas. The video title should show the topics.

  • @adammurday17
    @adammurday17 ปีที่แล้ว

    At 8 minutes in you reference another video "go watch that video now", but its not clear what video is being referenced?

  • @lkeysoft
    @lkeysoft 3 ปีที่แล้ว

    I thought Realtime was about to be discontinued in favor of Firestore?

  • @fluttec
    @fluttec 2 ปีที่แล้ว

    Longer, more in depth videos

  • @jimcomccabe3
    @jimcomccabe3 2 ปีที่แล้ว

    40:00

  • @devstuff2576
    @devstuff2576 2 ปีที่แล้ว +2

    THOSE SHORT VIDZ ARE FOR TIK TOKERS ...We are programmers.

  • @jimcomccabe3
    @jimcomccabe3 10 หลายเดือนก่อน

    get for ios returns all nodes , not the one that you are interested in. this is a bug .

  • @MacMaurof6
    @MacMaurof6 2 ปีที่แล้ว +6

    outdated

  • @ezenaguemmanuel3163
    @ezenaguemmanuel3163 2 ปีที่แล้ว

    Please make the videos short

  • @olamilekanadeleke6806
    @olamilekanadeleke6806 3 ปีที่แล้ว +1

    // make long and detailed Videos
    If(Video.long){
    Video.better();
    Video.wellDetailed();
    }

  • @thomasmabika7291
    @thomasmabika7291 3 ปีที่แล้ว +1

    3 hours should be the standard video duration.

  • @TalYaron
    @TalYaron 3 ปีที่แล้ว

    TMI - I just needed to learn how to use firebase and flutter. Being experienced in firebase, I wasn't needing the intro.

  • @jiratpattaragultawee6560
    @jiratpattaragultawee6560 2 ปีที่แล้ว +3

    final data = new Map.from(event.snapshot.value); return error The argument type 'Object?' can't be assigned to the parameter type 'Map, anyone know why?

    • @ingeniorGames
      @ingeniorGames 2 ปีที่แล้ว

      I get the same error

    • @ingeniorGames
      @ingeniorGames 2 ปีที่แล้ว +3

      [UPDATE] I fixed the problem in this way: (event.snapshot.value) as Map

  • @CodeNight-dm2hv
    @CodeNight-dm2hv 2 ปีที่แล้ว

    In the stream publisher don't forget to create an empty list and check is the snapshot exists so it will not crash when there's no items in the database.
    Example:
    Map ordersMap = {};
    if (event.snapshot.exists){
    ordersMap = Map.from(event.snapshot.value);
    }

  • @peterbparker6968
    @peterbparker6968 2 ปีที่แล้ว

    final data=Map.from(event.snapshot.value); doesn’t work for me . It shows error: The argument type Object? can’t be assigned to the parameter type Map…. Any solutions?

    • @chuckh9857
      @chuckh9857 2 ปีที่แล้ว

      Me too.

    • @chuckh9857
      @chuckh9857 2 ปีที่แล้ว

      I tried this: final data = event.snapshot.value as Map; The compile error went away but it cashed with this: Unhandled Exception: type '_InternalLinkedHashMap' is not a subtype of type 'Map' in type cast.

    • @chuckh9857
      @chuckh9857 2 ปีที่แล้ว

      Here you go. Change the firebase_database dependency from #^9.0.2 to 7.0.0.

    • @chuckh9857
      @chuckh9857 2 ปีที่แล้ว

      firebase_database 8.2.0 works (released 8 days ago) 9.0.0 and higher does not (released 2 days ago, and 17 hours ago)

    • @peterbparker6968
      @peterbparker6968 2 ปีที่แล้ว

      @@chuckh9857 i tried making it 7.0.0 and it ended up giving me errors ill try this thanks alot friend