Learn Flutter Clean Architecture & TDD - Full Course (Flutter Tutorial)

  Рет қаралды 213,640

Reso Coder

Reso Coder

Күн бұрын

Пікірлер: 278
@tannermeade
@tannermeade 5 жыл бұрын
Timestamps: 0:01:41 [01] Explanation & Project Structure 0:25:14 [02] Entities & Use Cases 1:03:45 [03] Domain Layer Refactoring 1:26:41 [04] Data Layer Overview & Models 1:56:17 [05] Contracts of Data Sources 2:22:32 [06] Repository Implementation 3:03:38 [07] Network Info 3:23:15 [08] Local Data Source 3:53:15 [09] Remote Data Source 4:24:46 [10] Bloc Scaffolding & Input Conversion 4:50:57 [11] Bloc Implementation 1/2 (and Basics of Test Driven Development) 5:26:47 [12] Bloc Implementation 2/2 5:59:15 [13] Dependency Injection 6:29:22 [14] User Interface
@ResoCoder
@ResoCoder 5 жыл бұрын
Whoah! You're faster than me. Thank you!
@saisonysrinu
@saisonysrinu 5 жыл бұрын
Very very useful. Thank U
@shantanooh6455
@shantanooh6455 4 жыл бұрын
@@ResoCoder By TDD it meant that test drives the design. But I am confused by the fact that in this tutorial you have not written UI test or integression tests. Just the unit tests which will drive our business logic but not UI or it's logic. It will be really useful if we get a bigger project to get more of this tutorial. Your tutorial and teaching methodology is really great. Thanks. Also, adding your references for creating this tutorial in description will also help us to get into more details.
@nepalesecreator8671
@nepalesecreator8671 4 жыл бұрын
God bless
@vutuananh747
@vutuananh747 3 жыл бұрын
@@shantanooh6455 I think he keeps the rest for people who subscribed his courses, and he should be.
@rossthemusicandguitarteacher
@rossthemusicandguitarteacher 4 жыл бұрын
I would have paid good money for this course. Just finished the video version, now I am going to go through the written version a few times. This guy is SOLID AF! :)
@nabijonazamov3695
@nabijonazamov3695 5 жыл бұрын
Before watching this tutorial, I thought that I was not a professional flutter programmer, after watching it I realized that my thoughts were correct. Thanks to the author, I learned a lot of things
@nvr__
@nvr__ 4 жыл бұрын
Hey hi, iam just begginer. I complete flutter begginer course in net ninja . Do u need any further things to take this course. Plse show me a path , I follow docs now, but I have idea of nothing I got.
@BelgianDaSeeD
@BelgianDaSeeD 5 жыл бұрын
Seriously man, you're my preferred content creator about flutter. I love your way to explain things. It's always clear and without any glitch disturbing the learning curve ! Keep up the good work dude !
@achinthaisuru8047
@achinthaisuru8047 4 жыл бұрын
mine preferred content creator abot flutter as well , keep up the good work @rescoCoder
@JimmyCheng
@JimmyCheng 5 жыл бұрын
man, you are the hero of 2020!
@reyPiti
@reyPiti 5 жыл бұрын
33:04 for the lastest version of equatable instead of NumberTrivia({@required this.text, @required this.number}) : super([text, number]); the new way to pass the parameters is through an override of props --> NumberTrivia({@required this.text, @required this.number}); @override List get props => [text, number]; Just something I noticed while following the tutorial
@solomonaryeetey7370
@solomonaryeetey7370 4 жыл бұрын
This is absolutely the best Flutter content is this whole world!!!!!!
@rossthemusicandguitarteacher
@rossthemusicandguitarteacher 4 жыл бұрын
For the bloc -> use add instead of dispatch if you are following along with current package versions. Also, in the current version of bloc, the bloc.state will return the current state and not the stream. So just use bloc, and the test will pass just fine. :) At about 5:19:00
@DennisIvy
@DennisIvy 5 жыл бұрын
Just had this video recommended to me by KZbin and I had to check out your channel because of your awesome thumbnails. Seriously, love the way your feed looks. Good thumbnails tell me the creator took time on the video. I’ll be following :)
@ResoCoder
@ResoCoder 5 жыл бұрын
Thank you for noticing 🥳
@spanndanbhandari317
@spanndanbhandari317 2 жыл бұрын
Thank you completed 7 hrs course...learnt alot!
@amitforever2007
@amitforever2007 4 жыл бұрын
Great tutorial, I used flutter bloc 5.0.0 and followed your tutorial anyone facing problem passing test at this 5:30:00 For Initial state use test('initial state should be empty', () async { final initialState = await bloc.first; expect(initialState, equals(Empty())); }); -------------------- test('should emit [Error] when the input is invalid', () async { //arrange when(mockInputConverter.stringToUnsignedInteger(any)) .thenReturn(Left(InvalidInputFailure())); //assert later final expected = [ Empty(), Error(message: INVALID_INPUT_FAILURE_MESSAGE), ]; expectLater(bloc.asBroadcastStream(), emitsInOrder(expected)); //act bloc.add(GetTriviaForConcreteNumber(tNumberString)); }); ---------------------
@ankitlakum1
@ankitlakum1 4 жыл бұрын
I salute your patience for being with us for such a elastic elaboration
@FonkamL
@FonkamL 4 жыл бұрын
On a very serious note, flutter and everything aside. Your mic and sound quality is amazing👌🏿👌🏿. There are many good courses out there one can't complete because of headache caused by the poor sound quality. Thank you!
@M.BilalAhmad
@M.BilalAhmad 4 жыл бұрын
So precious knowledge, flawlessly delivered without any charges. Amazing! Hats off to you! Watched this video twice to get the grip :)
@ShadowInfest
@ShadowInfest 5 жыл бұрын
Best series on flutter in one video, for what more you could ask 😂🔥👊🏻 thanks a lot.
@pedrodelacruz2369
@pedrodelacruz2369 4 жыл бұрын
Done!!! This has beem one of the most important Tutorials for me!! i am going to start the next FB & DDD Tutorial. Thanks Reso!!!
@Akleo59
@Akleo59 Жыл бұрын
Thank you so much man, this course was so interesting and especially with the modifications to perform with all the new versions of the differents packages forces us to trully understand what's going on. Can"t thank you enough for the knowledge i got through out this course 👏👏
@4funrc11
@4funrc11 5 жыл бұрын
_Clean Architecture_ says it all! And for my mindset, simply can't be stressed enough. Thank you.
@elliotalderson3724
@elliotalderson3724 4 жыл бұрын
Thank you for the excellent tutorial! It's even better than most of the paid stuff on udemy... Really good work!
@jakeromeopeniano1356
@jakeromeopeniano1356 4 жыл бұрын
Gem tutorial with no ads.
@MuslimStoic123
@MuslimStoic123 2 жыл бұрын
it so informative that i watch it full video without any break thank u reso bro
@matthieuregnauld9648
@matthieuregnauld9648 2 жыл бұрын
This is some next level tutorial. Thanks to you, I finally managed to understand many concepts I had a hard time wrapping my head around. Thank you so much!
@meek6836
@meek6836 2 жыл бұрын
this is 2 years old, still relevant?
@lone.wo1f
@lone.wo1f 5 жыл бұрын
Wow, just wow! You should be a flutter GDE!
@ResoCoder
@ResoCoder 5 жыл бұрын
Spread the message! 😄
@purushottamkumar3853
@purushottamkumar3853 3 жыл бұрын
@@ResoCoder now
@joyblanks
@joyblanks 5 жыл бұрын
Very well articulated. you have patience and skills hats off to you brother. thanks for this awesome tutorial
@swplogic4158
@swplogic4158 5 жыл бұрын
My friend, where did you learn this? Awesome! Thank you a lot man
@ispiretechnologies
@ispiretechnologies 5 жыл бұрын
You rock My dear sir, please keep us learning, and we cant thank you enough, all love from Zimbabwe.
@mihaiignat2306
@mihaiignat2306 5 жыл бұрын
AFRICA ARISE HonestChiefPoet iwe! You started learning flutter? Give me your watsapp number and we can learn together tho
@TM-xp7hd
@TM-xp7hd Жыл бұрын
Just reached the 3 hour mark and this course is beating my ass 🤣 Thanks for the awesome instruction.
@gautambedi591
@gautambedi591 Жыл бұрын
Next level content mate! Loved it
@clintonomondi4949
@clintonomondi4949 3 жыл бұрын
Im restarting my app again coz of my spaghetti code but for some reason i am so excited to do coz i was so worried about the crash reports i was gonna get ... TDD actually grows on you and men! it sticks
@kaunk1183
@kaunk1183 4 жыл бұрын
Are 10 dislikers kinda struggling React Native users? :D Gosh, this is gold, as always.
@krzysztofk.8842
@krzysztofk.8842 3 жыл бұрын
Well there's some issues with the architecture, for example, @ResoCoder keeps sayin that these modules are "completely independent". But it's not the case. Nothing is stopping developers to write code where domain logic (or data) has dependency on presentation layer, which breaks the entire idea.
@elpolodiablo5486
@elpolodiablo5486 Жыл бұрын
Bro this is so cringe
@MrJahchap
@MrJahchap 5 жыл бұрын
Wow! Content so good no single dislike. Thanks thanks people! 457th Like was from me. Let's keep it coming people.
@haidernaqvi87
@haidernaqvi87 Жыл бұрын
How to handle the stream like firestore stream in the streambuilder widget in the UI. Anybody can give an exampleof the usecase, data source?
@davidalejandroreyesmilian9501
@davidalejandroreyesmilian9501 4 жыл бұрын
thanks for such a detailed and easy to consume content. Great work!
@osamadarabeh
@osamadarabeh 2 жыл бұрын
Thanks a lot for your great tutorials, it was beneficial for me in my career.
@fclinuxnova7977
@fclinuxnova7977 5 жыл бұрын
the new version of equatable 1.0.2 change the code like this, and will it be ok when we do not use meta in code: 36:43 class NumberTrivia extends Equatable{ final String text; final int number; NumberTrivia(this.text, this.number); @override List get props => [text, number]; /* equatable version 0.4.0 NumberTrivia({ @required this.text, @required this.number, }) : super([text, number]); */ }
@user-sankarsana
@user-sankarsana 5 жыл бұрын
Sumptuously! Do not come off! Thanks for the job.
@anandkumark3396
@anandkumark3396 5 жыл бұрын
Thanks for your valuable content. It helped me to be a better programmer. I started applying clean architecture to my office project. I have a question: ** My app has Authentication and Homepage (contains basic info of all modules in the application, like info about the number of applications to approve whereas the applications list is the separate page). How to divide the complete app into features? Should I consider the whole authentication module(Login, Signup, OTP Verification) as one feature ? Or each individual page itself as a feature? Would like to know your valuable insights about it. Thanks for your valuable time.
@jeffglenn5248
@jeffglenn5248 4 жыл бұрын
You have helped me immensely. Thank you for everything you do!
@Benony91
@Benony91 5 жыл бұрын
At 3:45:50. If anyone has issues with testing that the getLastNumberTrivia throws a CacheException, then make sure that you imported 'package:matcher/matcher.dart' but not 'package:flutter/material.dart'.......
@jimmyfmedina
@jimmyfmedina 5 жыл бұрын
Excellent work, amazing as well as Flutter. Your videos and content on Flutter are very helpful and useful.
@jabbarbakhshande1395
@jabbarbakhshande1395 4 жыл бұрын
always enjoy your videos. please enable CC caption for this video, thanks in advance
@as-pn910
@as-pn910 5 жыл бұрын
This can be one of the best thing ever created in the flutter world. Since the day one of Android development I was looking for something like this. And with flutter this architecture seems to be perfect, scalable, colloborative. After this course entire flutter app can be planned using UML and Mind Map, only thing remain to do is coding which later becomes really easy. It will be highly appreciated if you can make an note app starting from UML, TDD + Architecture.
@bacsiszekely2149
@bacsiszekely2149 3 жыл бұрын
Omg you are a godsent, this series was super helpful, learned a lot. But let's turn to the real questions, what font and theme were you using in the videos ?
@alex_moreno
@alex_moreno 4 жыл бұрын
What a master class! Thanks a lot for sharing this. You are amazing
@robbenooyens2064
@robbenooyens2064 4 жыл бұрын
3:12:28 Thought my speaker broke or something haha Anyway, nice tutorial! Perfect for beginning flutter-devs!
@ResoCoder
@ResoCoder 4 жыл бұрын
Holy smokes! I almost lost my left ear. Pardon the Premiere Pro rendering 😅
@chinyun1526
@chinyun1526 2 жыл бұрын
04:17:00 Just wanna know that should we test the parsing error for JSON? that makes It throw an unexpected exception, and also the previous part, we used `on ServerException` instead of `catch(e`), that made the repository break Either? Is this expected? Will you guys handle these cases in production?
@phamluc2661
@phamluc2661 4 жыл бұрын
Thanks so much Reso Your tutorial is very useful to me
@TevaIllathaAani
@TevaIllathaAani 5 жыл бұрын
u r my hero ...respect from INDIA sallluuuuuuuuuuuuuuuute!
@patricklin1014
@patricklin1014 3 жыл бұрын
This is amazing and really appreciated. Thank you for making these!!
@PhillipMwaniki
@PhillipMwaniki 5 жыл бұрын
I just found about you.... And I thank God for it!!!!!!
@JayeshLathiya77
@JayeshLathiya77 Жыл бұрын
Thank you SO much, Really appreciate your effort.
@그르릉-f3c
@그르릉-f3c 4 жыл бұрын
I am in love !! Thank you for the good tutorial
@he.who.debugs
@he.who.debugs 2 жыл бұрын
Damn, man!! I'm waiting for more more more videos like this one from you
@rossthemusicandguitarteacher
@rossthemusicandguitarteacher 4 жыл бұрын
Muuuuuuuuuuuuuuuuuch love for this my friend.
@Cryaxxx
@Cryaxxx 4 жыл бұрын
1. TypeMatcher is deprecated use isInstanceOf rather for the test in number_trivia_local_data_source_test to pass. 2.Add this to your manifest file to allow unsecured HTTP connection as the API has no https provision Thanks for the awesome tutorial
@karleisheim8043
@karleisheim8043 5 жыл бұрын
video suggestion: showing how to share data between blocs using clean architecture. Best explained by example: You have an app in which the user can save e.g. recipes. In this app, you can navigate to different routes, and also edit recipes. If the user does so, the recipe data has to update on every opened screen on the navigation stack. How can this be archieved by Clean Architecture (with Bloc)? I know that one way to fo this is to pass blocs to other blocs in the constructor and listen for changes. But that doesn't seem nice.. I feel like it would be best to implement it on other layers. Thanks for your awesome work!
@ResoCoder
@ResoCoder 5 жыл бұрын
Thanks for the suggestion, I've just added it to my list. However, passing BLoCs into constructors is what I'm doing in apps I build for clients too and it seems to be working fine. I'm not sure what else we can do while keeping the app "non-overengineered".
@karleisheim8043
@karleisheim8043 5 жыл бұрын
@@ResoCoder I thought about getting the data as Streams out of the repository, so that the Blocs listen to changes and don't have to listen for actions in other blocs, which may cause changes. Like the first answer of phillywiggins suggests: www.reddit.com/r/FlutterDev/comments/asgggp/recommended_way_to_share_data_between_blocs/ But yeah it would cause more code and may be overengeneered then.. Thanks for putting this topic on your list anyways! :D
@KanishkaDilshan
@KanishkaDilshan 5 жыл бұрын
This is super useful! Really appreciate your effort.
@foufoulala
@foufoulala 4 жыл бұрын
Great content, but I think there is a mistake. In an "Onion" architecture, the domain is at the center. That means that you should not use external dependencies in your domain because it makes it dependant on something out of your control. As far as I understand this kind of architecture, the domain should be pure. Btw, this is by far the most professional content on flutter that I have found.
@johnpaulcarter7
@johnpaulcarter7 4 жыл бұрын
He explicitly proposes “Reso Coder's Flutter Clean Architecture Proposal” for implementing the Onion.
@sumeet9676
@sumeet9676 4 жыл бұрын
@Reso Coder 1:52:13 what if backend developer screws the JSON. like number will be received as null or "1"? TDD is scary. Fun until you receive weird JSON changes overnight. Also, when new keys are added to the JSON for displaying in the UI, we will still have to touch multiple layers to make it compatible right?
@leviroelofsma7958
@leviroelofsma7958 5 жыл бұрын
Thanks for making this tutorial.
@AlexChe7
@AlexChe7 5 жыл бұрын
This is gold. Thanks, sincerely.
@nicolasdupere
@nicolasdupere 3 жыл бұрын
No. This is Diamond.
@evansowamoyo2612
@evansowamoyo2612 4 жыл бұрын
I have a very crucial question, say for example, I have many features I want to implement in my app, namely, authentication feature, data fetching using REST, using datas like Maps, and many other device specific functions, do i have to create features like this for all of them as regards clean architecture or I can mix them??.. I am confused
@ArielMoments
@ArielMoments 2 жыл бұрын
Hey, I'm really glad that you made these course. And, Im really enjoying learning here. However, I'm having some issues with the website though. Whenever I try to load more content, the page keeps loading. On the network tab, I seem to get the 403 error for some reason.
@dilyorbekalimov2759
@dilyorbekalimov2759 4 жыл бұрын
Full Course was awesome! Are you going to add UI tests too?
@mercenex6329
@mercenex6329 5 жыл бұрын
Thank you SO much man! Really appreciate your effort.
@etiennetheodore
@etiennetheodore 5 жыл бұрын
Wow the full tuto is 7hours long oO ! With 13 videos we don’t know haha. Very thanks for this content ! You rock !
@ResoCoder
@ResoCoder 5 жыл бұрын
I was quite shocked as well 😄
@wSRV
@wSRV 5 жыл бұрын
Amazing job, dude! Thank you very much!
@adailyq
@adailyq Жыл бұрын
Жақсы курс. Рахмет!
@chrislamont7529
@chrislamont7529 4 жыл бұрын
For anyone looking to add the aaa snippet: Visual Studio Code > Code > Preferences > User Snippets and paste this in. "Test AAA": { "prefix": "aaa", "body": [ "test(", " 'should $0',", " () async {", " // arrange", " ", " // act", " ", " // assert", " ", " },", ");" ], "description": "Test with arrange, act and assert" }
@kyawzin-kz
@kyawzin-kz 5 жыл бұрын
I love this kind of long videos
@XxX0Simpen1XxX
@XxX0Simpen1XxX 4 жыл бұрын
He is using the extension "Material Icon Theme" by Philipp Kief (with some tweaks to it in the settings.json) if anyone else but me wondered :)
@JkeyKong
@JkeyKong 5 жыл бұрын
2:23:45 I will continue it by tomorrow
@ResoCoder
@ResoCoder 5 жыл бұрын
Slacker! 😂😂😂 JK
@JkeyKong
@JkeyKong 5 жыл бұрын
@@ResoCoder ok continue again
@ognacyyoutuification
@ognacyyoutuification 3 жыл бұрын
pure gold, thank you
@DeathStocker
@DeathStocker 4 жыл бұрын
3:20 clicks random trivia, gets 69. Nice. XD
@yoriichi28
@yoriichi28 8 ай бұрын
Great video @ResoCoder Suppose there is some variable like bool , string or any variable that can change UI like isSaved Something like that so if we need to handle them how we can Like in Getx we can declare in controller file but in this structure how we can manage As u said in bloc there will be only less logic like calling apiRepo/use case so can you explain that one? It will be great. Also more question on any sdk implementation like firebase services or suppose we are using any ChatSdk so how do we manage that in clean architecture
@alex_kenbo
@alex_kenbo 5 жыл бұрын
Timeline step-by-step screenshots for this course alexkenbo.github.io/index.html ✅success run test ⛔️failed run test
@ResoCoder
@ResoCoder 5 жыл бұрын
This is amazing! 🤩🤯 If only I could pin multiple comments 😢
@alex_kenbo
@alex_kenbo 5 жыл бұрын
@@ResoCoder Comments for the step? Yes, I think that would be great. There is the ability to display any html with the image.
@evansowamoyo2612
@evansowamoyo2612 4 жыл бұрын
how also do we implement clean architecture when we want to create an app that has so many screens if only this one screen has so much code
@LuisDa20
@LuisDa20 2 жыл бұрын
Is better, this arquitecture is for large proyects, imagine having 40 screens and 200 widgets in two folders and the code keep growing, just whit folders the code is a mess whit clean arquitecture you now the modules of your proyects and it's more organized
@faisalansari8092
@faisalansari8092 Жыл бұрын
Correct
@haydensprogramming6766
@haydensprogramming6766 4 жыл бұрын
A better idea than using the NoParams class for the use cases is to use the Unit type from dartz, which is a functional programming concept anyway.
@ronytesler
@ronytesler 3 жыл бұрын
Is it updated for today? For example, does it take into consideration the 'provider' package?
@michaelbedry3530
@michaelbedry3530 4 жыл бұрын
Where can I find your code snippets like aaatest, etc
@kretynek1
@kretynek1 2 жыл бұрын
Number trivia, you are Talking about code design and abstraction, and at the same time you are bound to ints. What if I would like to change api to return doubles, or number trivia could return for example pi or Euler number info? Maybe it does?
@harisijazwarraich1306
@harisijazwarraich1306 3 жыл бұрын
I have a question? Can I use the Clean Architecture with GetX?
@kavinkumar-v
@kavinkumar-v Жыл бұрын
Can you explain how to use when we have multiple feature like login, signup, setting? And Whether we need to make the user entity in core folder. Looking for reply or video about it.
@Linxy
@Linxy 5 жыл бұрын
Fantasic Video Job Good Man
@code593
@code593 12 күн бұрын
still very useful tutorial ever
@THEMithrandir09
@THEMithrandir09 4 жыл бұрын
How can you use such simple names like "Error" for the BLoC states? Wouldn't you get a naming collision as soon as you create your second bloc?
@mehranshoghii5493
@mehranshoghii5493 3 жыл бұрын
Amazing! 😍
@TalksFromCar
@TalksFromCar Жыл бұрын
@reso coder - can you update the course and can anyone help me how http interceptor will work in these case
@PrabhathDarshana
@PrabhathDarshana 3 жыл бұрын
Man, you are a Legend! (Y)
@twh4526
@twh4526 5 жыл бұрын
Thank you kind sir. I'm a relative newb to programming. But I've made a few basic apps and just finished one fully working one for a client. They were all spaghetti without any formal architectures. So thank you very much for this, even though I will have to look up a lot of terminologies you may use. A few questions if I may: 1. What theme are you using for your vs code? 2. Is there a way to make vs code Debug Console color coded so I can read them much more easily? 3. How do you do that auto import classes thingy when you code? Is that an extension or a shortcut? Thanks!
@dawidniegrebecki2205
@dawidniegrebecki2205 4 жыл бұрын
Great tutorial
@kretynek1
@kretynek1 2 жыл бұрын
Wouldnt it be better to make failure dependend on exception, and then return dependant of it...? No copy paste?
@akshaymankodia9003
@akshaymankodia9003 4 жыл бұрын
@Reso , please upload for the Firebase sign In methods with the same architecture. it will be helpful in understanding repos implementation better.
@88res
@88res 4 жыл бұрын
Why did you use a Failure class instead of the try/catch pattern? Try/catch is what Clean Code recommends. Curious on the motivation for that
@adeelzahid9622
@adeelzahid9622 3 жыл бұрын
Super Awesome 👌👌👍👍💕💕
@evansowamoyo2612
@evansowamoyo2612 4 жыл бұрын
Why do we have to use Params and NoParams for the usecases?
@eliasayele1102
@eliasayele1102 3 жыл бұрын
Thanks brother, and we expect updates
@awangprajaanugerah8231
@awangprajaanugerah8231 3 жыл бұрын
What if I have more than one feature that is almost the same for example a feature to display a news and search for a news, how to divide the project structure for presentation, domain, and data
@tamacroft
@tamacroft 5 жыл бұрын
love this tutorial, thanks
@kobowo
@kobowo 4 жыл бұрын
Hi Matt, great tutorial! We're trying to implement your architecture into our own app. I just wanted to ask about handling global state. If lets say I had a login feature and this returns a User object, how would I go about sharing the User object to other features without breaking the concepts of clean architecture? Nice explanation on how to TDD without going insane btw XD
Flutter Basics by a REAL Project
25:42
Flutter Guys
Рет қаралды 581 М.
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
小丑教训坏蛋 #小丑 #天使 #shorts
00:49
好人小丑
Рет қаралды 54 МЛН
Flutter Crash Course
59:20
Traversy Media
Рет қаралды 682 М.
The Genius Way Computers Multiply Big Numbers
22:04
PurpleMind
Рет қаралды 192 М.
Flutter Clean Architecture - Full Course
1:14:08
Flutter Mapp
Рет қаралды 85 М.
Flutter TDD Clean Architecture Course [2] - Entities & Use Cases
40:23
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН