Тёмный

Moor (Room for Flutter) #1 - Tables & Queries - Fluent SQLite Database 

Reso Coder
Подписаться 113 тыс.
Просмотров 72 тыс.
50% 1

📗 Learn from the written tutorial & get the project files 👇👇
resocoder.com/flutter-moor-ep1
👨‍💻 Do you write good code? Find out now 👇
resocoder.com/good-code-quiz
Mobile apps and local databases go well together. If you want to take the relational database route, SQLite is the winner. However, the problem with bare bones SQL databases of any kind is writing queries and then integrating them with your other code.
Android solves this with the beloved ROOM library, on Flutter though, you are stuck with the low-level SQFLite package... Not anymore! MOOR is a library allowing you to work with the Flutter's SQLite database fluently and in pure Dart. Behind the scenes, it uses the SQFLite package. Oh, and if you're wondering, MOOR is just ROOM spelled backwards.
Go to the website for more information, code examples, and articles:
● resocoder.com
Follow me on social media:
● / resocoder
● / resocoder
● / resocoder
● gab.ai/resocoder

Опубликовано:

 

4 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 148   
@KhatibFX
@KhatibFX 5 лет назад
I don't normally write comments in RU-vid or any other social media in general, but I just wanted to thank you for you hard work and continuous effort in creating invaluable content with just the right amount of detail. Your videos have helped me since I was applying for companies with 0 knowledge of Kotlin, into writing a Kotlin app that earned me my job, beating 60 other applicants who have 3+ more years of experience over me, and now helping me with the transition to flutter -again with 0 experience- and getting credited for delivering the best output at my workplace. Thank you so much.
@ResoCoder
@ResoCoder 5 лет назад
Reading about your successes is the most rewarding thing ever. Thanks for learning here on Reso Coder!
@kirill4531
@kirill4531 3 года назад
how did you find out that there were 60 applicants for your position?
@GianMarcosAguilar
@GianMarcosAguilar 3 года назад
2020 UPDATE: The Provider wrapper no longer uses the 'builder' property but instead uses 'create'. So the code builder: (_) => AppDatabase(), changes to create: (_) => AppDatabase(),
@erikaszabo1439
@erikaszabo1439 3 года назад
thx
@chipMyShip
@chipMyShip 3 года назад
Thank you so much
@zurce9
@zurce9 3 года назад
I can upvote just once, but thank you so much (:
@AmanShrivastava23
@AmanShrivastava23 2 года назад
I needed this soo much😂
@vihangachamod5528
@vihangachamod5528 Год назад
thank you!
@jpeg22
@jpeg22 4 года назад
from the bottom of my heart, thank you.
@jonathan10543
@jonathan10543 5 лет назад
Great video about setting up the EASIEST database in Flutter! Thanks!
@EddyCaffrey
@EddyCaffrey 5 лет назад
Great video 👍🏽. Moor is a very useful package. I do like the Floor package also. It is exactly like the Room library
@josephcobbinah5412
@josephcobbinah5412 4 года назад
I'm in love with Moor.. Thanks man!!
@RIAJULISLAMI
@RIAJULISLAMI 5 лет назад
Thanks a lot, Moor is more easy, less code writing than Room Android Library!. Thinking to do all my future mobile projects in Flutter rather than Native(Kotlin) way fully.
@sudesh6807
@sudesh6807 5 лет назад
😍😍....why r u so awesome... Thanks for relating ur tutorials to native android development, it's the best motivation to learn👏
@mattsillett5966
@mattsillett5966 3 года назад
This tutorial is most likely the best i have ever seen for Moor Database in Flutter. Thank you very much for your awesome clear explanations and demo's! There are very few tutorials on Moor Database available in youtube and the documentation for the plugin is difficult to follow if you are new to coding etc. Would it be possible to have a tutorial demonstrating how to obtain data from Moor database into a chart/graph in flutter? That would be awesome to have a tutorial on that to follow on from learning Moor. Thanks again for your amazing contribution and i would think that many novices out there will really appreciate this tutorial.
@easazade
@easazade 4 года назад
keep doing the flutter stuff. some awsome job you're doing there
@moyadark
@moyadark 5 лет назад
thanks for the great work man, just what i needed !
@sanjivkumar-xu9yo
@sanjivkumar-xu9yo 5 лет назад
It was awesome. Thanks for the great work you did.
@dalestewart
@dalestewart 4 года назад
Excellent Introductory Tutorial with Moor
@alamin00038
@alamin00038 Год назад
one of the best tutorial , thank you very much sir!
@jpgotopo
@jpgotopo 4 года назад
Your tutorials seem great to me! Can you teach about how to do with several tables with SQLite and Flutter?
@josephcobbinah5412
@josephcobbinah5412 4 года назад
This is one of the best software engineering channels on RU-vid!
@ResoCoder
@ResoCoder 4 года назад
Thank you, I'm Fluttered 😉😉
@josephcobbinah5412
@josephcobbinah5412 4 года назад
@@ResoCoder Lol I saw what you did there.. You are awesome
@mahmoudsalah5359
@mahmoudsalah5359 5 лет назад
you are amazing man :) thanks
@CalibrationExtreme
@CalibrationExtreme 3 года назад
Great tutorial as always from you - quality work! Thanks and please keep it up. Clarification - in the #2 video, you make use of the "moor" package in your pubspec, but in the final source code, only "moor_flutter" and "moor_generator" are included. Which is correct?
@TareqAlmadhoun
@TareqAlmadhoun 5 лет назад
thats great.. thank you
@1GAMEDOG1
@1GAMEDOG1 4 года назад
When you set the withDefault for the BoolColumn, why do you set it as Constant(false) instead of just false? What does the Constant() do? Thanks.
@earthrelated
@earthrelated 3 года назад
Thank you very much man! Can you please share your opinion on how much should one know Flutter in order to get a job.Like the areas that are a MUST! Thank you again!
@MidasLabs
@MidasLabs 4 года назад
Great tutorial What would I need to put in the value for a SwitchListTile? It is driving me bananas. thanks
@jasonwei6722
@jasonwei6722 5 лет назад
Your videos are always well explained and really helpful to a flutter beginner. I have a question related to local db crud. If in my view, the datas are from db and network at same time, how can I implement it? For example, in the task list, I need show a task emergency level field, which need to use taskId(this Id is still in local db) to query from an remote API.
@ahmedrashid8234
@ahmedrashid8234 4 года назад
Question please: if I want to use my pre existed database in the assets. like an offline dictionary app, Can you lead me to idea?
@Wei158
@Wei158 4 года назад
Hi Reso Coder, do you had something that can work another database then SQLite and fireBase such as MySQL, PostgreSQL or MongoDB?
@binhojansen
@binhojansen 5 лет назад
Excelent work. How about relationships? Works with moor? thanks
@sadabwasim9850
@sadabwasim9850 5 лет назад
Woohoo !! Great tutorial thanks 😍👍
@adnanmhanna2734
@adnanmhanna2734 4 года назад
nice lesson - we can use Chopper and moore to build online offline app?
@MrLarryQ
@MrLarryQ 5 лет назад
Excellent content, as usual. Are you on Patreon or another creator platform?
@JamesBond-mq7pd
@JamesBond-mq7pd 4 года назад
21:35 You don't recommend Redux because of overengineering and boilerplate?
@kirill4531
@kirill4531 3 года назад
good stuff
@leeroyhustle
@leeroyhustle 4 года назад
i need some assistance. how do i create a database in the code and call it upon pressing a button instead of generating it from a the keyboard?
@paulvickers8059
@paulvickers8059 5 лет назад
how would we add an int to this, say I wanted to add age aswell and it be saved to the database, the problem i can't figure out is how to save the input in the ui. With this it is a String name, but how could we add int age also. We have taskname or name, but how could I add multiple lines, say I wanted a ui, with name age, maybe weight and say another string hair colour, how could i do this and beable to update them?
@josbexerr5166
@josbexerr5166 5 лет назад
Muy didactivo Mister Reso gracias..... A que framework recomienda aprender Xamarin o flutter gracias
@ResoCoder
@ResoCoder 5 лет назад
Hola! I'd choose Flutter for sure.
@blipblap614
@blipblap614 5 лет назад
Moor looks great, I'll have to try it! Great topic, great video! PS. Would you consider removing the modal popup from your website? They're cancer.
@ResoCoder
@ResoCoder 5 лет назад
Thanks. They're cancer, but they work. It's a proven thing. I'm actually surprised at how well it works 😄
@kameikojirou
@kameikojirou 2 года назад
How similar is this to the Drift update? Would I be able to use this same tutorial or would it be a lot different?
@ahkamkhalaf7082
@ahkamkhalaf7082 4 года назад
very nice, how i can remove all rows inside table?
@martinrupertbulquerin228
@martinrupertbulquerin228 5 лет назад
Awesome tutorial! What theme are you using?
@Malaq4822
@Malaq4822 Год назад
u found it?
@erikaszabo1439
@erikaszabo1439 3 года назад
How can I fill the database with an initial data which is awailable from the first run? With the todo example so that when the user installs the app there are already to-dos in the database. (sorry I'm a beginner hobby programmer)
@nacnud_
@nacnud_ 2 года назад
How do I get a pre existing sqlite database into the framework in the first place. I'm migrating a project, say.
@Zenzfu
@Zenzfu 4 года назад
Nice tutorial. How to check api data exists in sqlite database api data in listview, please help.
@mohamadjawad4761
@mohamadjawad4761 2 года назад
Now the library is renamed to Drift
@khalidmeftu2226
@khalidmeftu2226 3 года назад
can we prepopulate?on moor
@derekknight7496
@derekknight7496 5 лет назад
I'm having an issue where I try to add a new recipe to my database but it requires me to add an id in the ui(because it is @required in the generated class). I remove required and it fixes the issue but i obviously shouldn't change the generated code. ps. id is auto incremented in my recipe that i wrote Any fixes besides changing the generated code or should I try creating an issue on GitHub?
@ResoCoder
@ResoCoder 5 лет назад
If you are using a more up to date version, use a UpdateCompanion class - see the second part of this series or the official docs for Moor.
@hareshsolanki6497
@hareshsolanki6497 5 лет назад
Hello, I'm facing one issue can give me give me solution issue is : "[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: Invalid argument(s): onCreate must be null if no version is specified"
@ricgor3441
@ricgor3441 Год назад
When the update to drift?
@vivekanandasuggu4247
@vivekanandasuggu4247 5 лет назад
Hi Reso coder once again a nice tutorial from you but why you have stopped the flutter chopper series. We are waiting for the continuation of your chopper series
@ResoCoder
@ResoCoder 5 лет назад
I didn't stop, next part coming this Saturday!
@vivekanandasuggu4247
@vivekanandasuggu4247 5 лет назад
@@ResoCoder Hey that's great, if it's possible please a video on uploading the list of multipart files using chopper
@ResoCoder
@ResoCoder 5 лет назад
I will cover everything but it will take multiple parts. The next one will be about interceptors and possibly basic converters.
@vivekanandasuggu4247
@vivekanandasuggu4247 5 лет назад
@@ResoCoder Thank you we are all eagerly awaiting for the chopper continuation.
@GianMarcosAguilar
@GianMarcosAguilar 3 года назад
Hi @Reso Coder, the newest Provider version seems to be breaking the code, I think it has to do with the implementation. Can you take a look and offer some feedback? Deeply appreciate it!
@ayoubbenmoussa5362
@ayoubbenmoussa5362 3 года назад
and need set value from database to textflied
@shabeenabarde
@shabeenabarde 4 года назад
Hi. When In 21:49, i am trying to keep the builder as is like in your tutorial but i am getting the error: The argument type 'Widget Function(BuildContext)' cant be assigned to the parameter type 'Widget Function(BuildContext, Widget); Some one please assist me as to how i can fix this. What did i do wrong?
@shabeenabarde
@shabeenabarde 4 года назад
So this error is causing because of the current version of the package provider. If i keep as same as yours, it works, although it affects my other packages. What is the way forward from this?
@danielw1979
@danielw1979 4 года назад
@@shabeenabarde Use create instead of builder
@muhajir1342
@muhajir1342 4 года назад
@@danielw1979 It works, thank you
@sohedulislam1652
@sohedulislam1652 4 года назад
How can I call a queries function for deleting whole table. eg : @UseDao(tables: [ Employees], queries: {'deleteAllEmployees': 'DELETE FROM Employees;',}) . or, For Deleting the Whole Table Rows How to create this type of function: Future deleteEmployee(Insertable employee) => delete(employees).delete(employee);
@erennmutlu_1
@erennmutlu_1 3 года назад
What's the main differences between Moor and Floor?
@djxigas
@djxigas 3 года назад
great tutorial! Please help me with: i'm getting this error: : The argument type 'Stream' can't be assigned to the parameter type 'Stream'. and in moor_database.dart i'm getting erro when put this way: Stream watchAllTasks() => select(tasks).watch(); so i changed to: Stream watchAllListas() { select(listas).watch(); }
@brunodluka3337
@brunodluka3337 3 года назад
we need more information (br aq tbm)
@abraiyan7984
@abraiyan7984 3 года назад
Go to your generated class, see what is the actual name for your TaskData, mine was TaskData, Don't mix data with the table/
@sinanajdihejazi7031
@sinanajdihejazi7031 3 года назад
16:21 you are also a good poet 😆😂
@anilbhomi9125
@anilbhomi9125 5 лет назад
How can we set conflict strategy ?
@jidechiukor3284
@jidechiukor3284 4 года назад
Did you get an answer to this?
@job-gg
@job-gg 4 года назад
Hi, can you know somehow to migrate a database made whit SQLite to Moor, or another reference that help whit this? I'm grateful if you could help. Regards.
@osamamagdy8285
@osamamagdy8285 4 года назад
Great tutorial! but i think that "floor database" is the most likely as Room in android .. not moor.
@kirill4531
@kirill4531 3 года назад
its still in alpha, right? it's december 2020 already..
@verryondrums
@verryondrums 4 года назад
Is there a chance to combine moor with TDD?
@ResoCoder
@ResoCoder 4 года назад
I wouldn't test Moor. I'd just create a layer of separation (a DataSource for Moor) and mock that in other tests, if needed.
@ashukerry7250
@ashukerry7250 3 года назад
hi please unable to generate this file 'part 'moor_filename.g.dart' it keeps on showing error eve after running the command flutter packages pub run build_runner
@erikaszabo1439
@erikaszabo1439 3 года назад
I had the same problem. I created a new project and copy-pasted everything and somehow it worked.
@alitonoliveira1700
@alitonoliveira1700 4 года назад
Not working. Provider( builder: ...) gives an error. I tried to use create: (_) => AppDatabase(), but I get an issue with Provider else where.
@elocnat
@elocnat 3 года назад
I'm assuming you're not stuck on this anymore, but for anybody else the solution is to change line 45 in 'new_task_input_widget.dart' from -- `final database = Provider.of(context);` -- to -- `final database = Provider.of(context, listen: false);` -- which should fix the issue.
@krzysztofmamak1685
@krzysztofmamak1685 3 года назад
@@elocnat Thanks. Now it works fine.
@travelfoodbusinessbestheyyono
@travelfoodbusinessbestheyyono 4 года назад
I have a problem with the streams made by moor they don't notify listeners like in your example I tried with stream builder just like your example and I also tried with StreamProvider and the both work just as getters the app won't show new tasks added unless I make a hot reload the problem isn't with stream listeners it is with moor's stream at first I used the same version in your tutorial then I used the latest version and no luck. I researched about moors streams and not much docs or QAs out there the user base is very low. I just don't know WTH with it. Any ideas?
@varadgauthankar
@varadgauthankar 3 года назад
Hey, I know it's been a long since you commented on this, but have you come up with the solution? I am also facing the same issue. Thanks
@travelfoodbusinessbestheyyono
@travelfoodbusinessbestheyyono 3 года назад
@@varadgauthankar I believe that was my last experience with it, I skipped on it and used different state management system.
@varadgauthankar
@varadgauthankar 3 года назад
@@travelfoodbusinessbestheyyono ohh its okay :), thank you so much for the quick reply really appreciate it, have a great day.
@hlim168
@hlim168 4 года назад
Sqlite documentation stated that: 1. The AUTOINCREMENT keyword imposes extra CPU, memory, disk space, and disk I/O overhead and should be avoided if not strictly needed. It is usually not needed.' 2. In SQLite, a column with type INTEGER PRIMARY KEY is an alias for the ROWID (except in WITHOUT ROWID tables) which is always a 64-bit signed integer. 3. On an INSERT, if the ROWID or INTEGER PRIMARY KEY column is not explicitly given a value, then it will be filled automatically with an unused integer, usually one more than the largest ROWID currently in use. This is true regardless of whether or not the AUTOINCREMENT keyword is used. My question is can we declare the id (of Task table) without the autoincrement and instead set it as primary key? will it work the same way?
@jidechiukor3284
@jidechiukor3284 4 года назад
Any update on this? Is this question on StackOverflow?
@lesliejoe6228
@lesliejoe6228 4 года назад
Great tutorials!! I tried to get single row matched with valueid but i couldn't figure it out for three days. Future getBookmark(int valueId) => (select(bookmarks)..where((book) => book.verseId.equals(valueId))).getSingle(); Code above i used to get single row matched. Can you please tell me how?
@nachtaktiverhalbaffe8006
@nachtaktiverhalbaffe8006 4 года назад
I got an error: Error running MoorGenerator NoSuchMethodError: The getter 'typeConverter' was called on null. Receiver: null Tried calling: typeConverter I checked the code many times and the code itself should be clean. Also rebuild the dart_tool/build directory. Any suggestions for an fix?
@godmakoto1041
@godmakoto1041 4 года назад
If you are new just use cloud firebase
@hlim168
@hlim168 4 года назад
Please help! when running 'flutter packages pub run build_runner watch', how come I always get this error: Invalid argument(s): Path must be absolute : dart:core [INFO] 1.2s elapsed, 1/3 actions completed. [SEVERE] moor_generator:moor_generator on lib/data/moor_database.dart:
@ResoCoder
@ResoCoder 4 года назад
I got that error too as I was recording a new tutorial today and I almost plucked my hair out! What you need to do is to go to the pubspec.*lock* file (not yaml) and change the analyzer version to "0.38.2". I don't know why they push out broken code, but hey, that's how it is. I hope this solves the issue for you.
@hlim168
@hlim168 4 года назад
@@ResoCoder Oh Wow! Thanks for the reply! Finally build success! Thanks again
@kantulaev
@kantulaev 4 года назад
ty
@saicharansigiri2964
@saicharansigiri2964 4 года назад
@@ResoCoder no bro if i change the version it is saying to do pubget so if we did that again analyser version resets ,tq in advance
@mirshodbaxromov4797
@mirshodbaxromov4797 3 года назад
In my terminal was showed this msg after running flutter packages pub run build_runner watch. What is problem? Dart 2.11.0-260.0.dev is incompatible with your dependencies' SDK constraints. Please run "pub get" again. pub finished with exit code 65
@mirshodbaxromov4797
@mirshodbaxromov4797 3 года назад
I found problem before running "flutter packages pub run build_runner watch",to do run "flutter pub get" in terminal.
@mosala7001
@mosala7001 3 года назад
what is the name of the theme you use in vscode please?
@Malaq4822
@Malaq4822 Год назад
u found it?
@mosala7001
@mosala7001 Год назад
@@Malaq4822 nope, i switched to intelIJ xD
@andrealbernaz
@andrealbernaz 5 лет назад
I could not generate the g.dart file. can you help me?
@mrd1gr00tKawHmuNewsApp
@mrd1gr00tKawHmuNewsApp 5 лет назад
Have you typed this command on terminal ? flutter packages pub run build_runner watch ?
@ShadowInfest
@ShadowInfest 5 лет назад
@@mrd1gr00tKawHmuNewsApp I can run the command but no file is created: Succeeded after 63ms with 0 outputs (0 actions)...
@mrd1gr00tKawHmuNewsApp
@mrd1gr00tKawHmuNewsApp 5 лет назад
@@ShadowInfest check in yr code Bro :D i think smth wrong :D
@ShadowInfest
@ShadowInfest 5 лет назад
@@mrd1gr00tKawHmuNewsApp y I had a naming which was not allowed in SQL... loop. If you don't know that you search for a while
@XezolPL
@XezolPL 4 года назад
20:00
@antonyaz3506
@antonyaz3506 2 года назад
dont't work to me
@abraiyan7984
@abraiyan7984 3 года назад
If you are facing the same issue I faced in the video (no value added to the list because the provider was giving an error), set listen: false in the provider.
@mohidden
@mohidden 4 года назад
I found these issues [SEVERE] moor_generator:moor_generator on lib/data/moor_database.dart: Error running MoorGenerator NoSuchMethodError: The getter 'typeConverter' was called on null. Receiver: null Tried calling: typeConverter
@MidasLabs
@MidasLabs 4 года назад
Got the same thing in my places..dart file Moor: Sent SELECT * FROM places; with args [] I/flutter (10579): Another exception was thrown: NoSuchMethodError: The getter 'data' was called on null. Lost connection to device.
@WimvanDeursen
@WimvanDeursen 4 года назад
Do you use the .call() after creating the columns? Because you should just remove that and use the () instead
@MidasLabs
@MidasLabs 4 года назад
@@WimvanDeursen Hi Wim, I do actually use ()(). I did get this sorted, but I needed to figure out how to change the value of the switch now, which is a bool. thanks for replying
@pollafattah7062
@pollafattah7062 2 года назад
Why the heck is working with SQL is not a good thing. I think if you understand and implement SQL statements yourself it will be so efficient for coding and for the running of the app
@darkcaster3619
@darkcaster3619 5 лет назад
What does nullable mean?
@ResoCoder
@ResoCoder 5 лет назад
It can be set to null.
@darkcaster3619
@darkcaster3619 5 лет назад
@@ResoCoder oh yeah thanks for the reply and the awesome video. I never knew about this package.
@sohedulislam1652
@sohedulislam1652 4 года назад
I/chatty (24609): uid=10233(com.example.sql_db) Thread-2 identical 1 line
@paulvickers8059
@paulvickers8059 4 года назад
Is it better to learn this or sembast?
@ResoCoder
@ResoCoder 4 года назад
Unless you need SQL, I'd go with Sembast.
@paulvickers8059
@paulvickers8059 4 года назад
@@ResoCoder thanks, why might you need sql over sembast?
@paulvickers8059
@paulvickers8059 4 года назад
I am also hearing about hive, I am a newbie so don't really understand databases much, so which is best to start with?
@ResoCoder
@ResoCoder 4 года назад
Hive is probably the simplest one to start with. I'm actually preparing a tutorial for it.
@paulvickers8059
@paulvickers8059 4 года назад
@@ResoCoder that would be good, I haven't seen a tutorial of it anywhere
@AbdullahHattab
@AbdullahHattab 2 года назад
Name of Theme please?
@Malaq4822
@Malaq4822 Год назад
u found it?
@pembatamang8233
@pembatamang8233 4 года назад
I would have named it Cocoon
@sohedulislam1652
@sohedulislam1652 4 года назад
Invalid argument(s): Path must be absolute : dart:core [SEVERE] moor_generator:moor_generator on lib/main.dart (cached):
@ResoCoder
@ResoCoder 4 года назад
I got that error too as I was recording a new tutorial today and I almost plucked my hair out! What you need to do is to go to the pubspec.*lock* file (not yaml) and change the analyzer version to "0.38.2". I don't know why they push out broken code, but hey, that's how it is. I hope this solves the issue for you.
@omershimony1
@omershimony1 4 года назад
@@ResoCoder you are amazing!
@michaelamir6504
@michaelamir6504 5 лет назад
Am I the only one who find the ordinary SQFLite package much more simpler than having to take care of all of these information 😒
@ResoCoder
@ResoCoder 5 лет назад
Yes
@darkcaster3619
@darkcaster3619 5 лет назад
Obviously yes!
@varadgauthankar
@varadgauthankar 3 года назад
Yes
@sohedulislam1385
@sohedulislam1385 4 года назад
Warning database has been locked for 0:00:10.000000. Make sure you always use the transaction object for database operations during a transaction. In my moor_database.g.dart file the DB has been locked for 10 seconds. The file generated code example: @override Set get $primaryKey => {id}; @override Task map(Map data, {String tablePrefix}) { final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : null; return Task.fromData(data, _db, prefix: effectivePrefix); }
@_dinesh
@_dinesh 5 лет назад
There is no encryption for Moor wont recommend using it in Production.
@yasseralbrikeet2292
@yasseralbrikeet2292 3 года назад
Old and need to be update
Далее
ELA NÃO ESPERAVA POR ISSO 🥶 ATTITUDE #shorts
00:20
6 SQL Joins you MUST know! (Animated + Practice)
9:47
Просмотров 130 тыс.
React Native vs Flutter vs Native - Let's Talk Engines
25:15
Wait... PostgreSQL can do WHAT?
20:33
Просмотров 191 тыс.
I tried 8 different Postgres ORMs
9:46
Просмотров 399 тыс.
Bloc Library - Painless State Management for Flutter
24:54
Practical Functional Programming in Dart & Flutter
37:12