Тёмный

Flutter TDD Clean Architecture Course [1] - Explanation & Project Structure 

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

📗 Learn from the written tutorial 👇👇
resocoder.com/flutter-tdd-cle...
👨‍💻 Do you write good code? Find out now!
resocoder.com/good-code-quiz
Keeping your code clean and tested are the two most important development practices. In Flutter, this is even more true than with other frameworks. On one hand, it's nice to hack a quick app together, on the other hand, larger projects start falling apart when you mix the business logic everywhere. Even state management patterns like BLoC are not sufficient in themselves to allow for easily extendable codebase.
This is where we can employ clean architecture and test driven development. As proposed by our friendly Uncle Bob, we should all strive to separate code into independent layers and depend on abstractions instead of concrete implementations.
Go to my website for more information, code examples, and articles:
● resocoder.com
Follow me on social media:
● / resocoder
● / resocoder
● / resocoder

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

 

4 авг 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 221   
@hexdump8590
@hexdump8590 4 года назад
Man, claps to you. Top quality and for free. Thanks for all this content. Really appreciated.
@EricBichara
@EricBichara 4 года назад
This is an amazing course you've put together, really appreciate all the hard work you put into it. In the future would love to hear more about how to handle more complex cases with full CRUD operations, as well as multiple views/blocs/repositories which are interdependent. Looking forward to the next class!
@sargamagarwal4544
@sargamagarwal4544 2 года назад
After watching ton of videos...I finally found yours who took time to go into the depth of things. Thank you
@Eltramicst
@Eltramicst 4 года назад
Matej, thank you so much for existing. You aim to provide the best app development courses/tutorials out there and in all of the research I have done over the years, yours have always prove to be a major cut above the rest-your pacing, your choice of words, your easy-going vocal demeanor-it's untouchable. I cannot express how truly thankful I am for you and the wonderful work you do for the entire developer community. Keep doing what you do best. Much love and support, brother. 💙
@tityseptiani8584
@tityseptiani8584 4 года назад
Thank you for the tutorial! Finally a real world implementation of a clean architecture instead just the common tutorials on how to create this and that. Your explanation is very clear and easy to understand.
@ernestbarrachina5771
@ernestbarrachina5771 4 года назад
Best video I've ever seen about flutter architecture! Thank you very much for the content!
@jonathan3087
@jonathan3087 4 года назад
Perfect explanations, perfect speed. Fantastic job. Best Flutter Tutorial I've seen on RU-vid! Hats Off to you Sir!
@Vellutia
@Vellutia 4 года назад
What an amazing series. I'm so thankful for all of the efforts you put into this series. Keep it up
@Majkelo879
@Majkelo879 5 лет назад
I'm comming from mvvm pattern and I was looking for something like that for flutter really long time and I finaly found. Thanks a lot, amazing video!!
@tintin537
@tintin537 4 года назад
I'm in the middle of my first flutter project, And I wish I had found you earlier. I'm a fan of Uncle Bob and clean architecture.
@yanuyusuf7721
@yanuyusuf7721 4 года назад
This is what I need. Love it, big thanks, excellent work dude!
@user-cg7yd4lx3i
@user-cg7yd4lx3i 4 месяца назад
The first person who explained why you have to have both models and entities, great stuff!
@omarhalabi889
@omarhalabi889 Год назад
Thank you from Syria, This is literally the corner stone I was looking for.
@marekchojecki4746
@marekchojecki4746 5 лет назад
Nice one. A lot of tutorials are focused on explaing one thing, a couple of them are showing archtectirure patterns, almost none of them are explaing testing. You are planning to create it all together and whats more with TDD. Awsome job and desire to share knowledge. Thanks for that and I hope, We’ll see a lot of videos from you
@kawhao3757
@kawhao3757 2 года назад
OH MY GOD! You make me to understand a lot design, framework , code I have coding 2 year . You're video open my mind forever. Thanks , sir.
@ntirinigasenior7901
@ntirinigasenior7901 5 лет назад
Well explained in a simple and understandable way, now I understand flutter as pro
@jasnamitrovic1650
@jasnamitrovic1650 3 года назад
ex iOS now Flutter dev here. just found out about this content and amazed by it! Keep up the great work.
@luisaaronpacorachangana7622
@luisaaronpacorachangana7622 4 года назад
What a good video, it brings a lot to good practices for development with flutter. Greetings from Peru!!
@SEOTADEO
@SEOTADEO 2 года назад
Thanks for this great video! Coding is easy, but designing a good architecture is quite a challenge.
@dalinarkholin4169
@dalinarkholin4169 5 лет назад
Amazing stuff, as usual. You're literally the best Flutter RU-vidr out there. Keep up the good work!
@ResoCoder
@ResoCoder 5 лет назад
Thank you very much!
@ShadowInfest
@ShadowInfest 5 лет назад
@@ResoCoder can just say the same ;) not just beginner stuff, everything is well structure and you deeply thought about what to tell and show! Relaxing voice, perfect speed and Linux haha. Keep up that good work!!
@Manish-cgain
@Manish-cgain 4 года назад
Didn't know Dalinar knew flutter, how's Urithuri ?
@dalinarkholin4169
@dalinarkholin4169 4 года назад
@@Manish-cgain OMG what a surprise! Urithiru is great. Gotta watch out for Odium though!
@laminebendib
@laminebendib Год назад
@@dalinarkholin4169 You're putting your newly acquired writing and reading skills to good use 👍
@mohammedmokhtar2482
@mohammedmokhtar2482 Год назад
your illustration is extremely clear and simple
@h3w45
@h3w45 Год назад
really amazing to see this advanced stuff
@guilhermelopes7809
@guilhermelopes7809 2 года назад
VERY good explanation. Thanks a lot for sharing this with us!
@TaweechaiMaklay
@TaweechaiMaklay 5 лет назад
Cool guy, looking forward to seeing the next lesson.
@techstudio7331
@techstudio7331 4 года назад
Firstly: Thankyou @ResoCoder for your overwhelming tutorials, You're Awesome!! Secondly: For All of you looking for same icons add this in your setting.json file: "material-icon-theme.folders.associations": { "global_state": "global", "ui": "layout", "bloc": "controller", "features":"other", "presentation":"layout", "data":"database", "domain":"rules", }, That's all folks!
@umidjonshoniyozov162
@umidjonshoniyozov162 4 года назад
its amazing and usuful thanks.Keep up the good work!
@tannerhoughton6233
@tannerhoughton6233 4 года назад
VERY HELPFUL!! Thank you 🙌🏼
@mazenalsakkaf
@mazenalsakkaf 4 года назад
This is cool stuff. Keep it up. I am learning something good here. Cheers
@aladdin8494
@aladdin8494 5 лет назад
You are doing a great work man keep going 😀
@divinemaredi8298
@divinemaredi8298 3 года назад
What would I do without this video? Thanks a lot!!
@mual77
@mual77 5 лет назад
Good job. Keep up the good work!!
@vOnez212
@vOnez212 5 лет назад
This is great! Thank you!
@JJ-vm6wg
@JJ-vm6wg 3 года назад
Really really nice work! Thanks so much.
@moubiswasEdits
@moubiswasEdits Год назад
The file structures are really awesome and it helps me as a beginner developer, Thanks for the video
Год назад
Thank you so much! This was super clear.
@davidfox4253
@davidfox4253 4 года назад
Thought I would add a comment here for those wondering how the entire course is instead of waiting till you are half way through and finding some modules aren't as good or lacking etc.. I can tell you, as a developer or a beginner, this course is a must because it follows solid engineering practices not ad hoc development like some other tutorials. As an experienced developer I still learned a lot and know you will as well. Thanks again RESO CODER!!!
@SameenIslam
@SameenIslam 4 года назад
Are you the creator of devRant by any chance?
@davidfox4253
@davidfox4253 4 года назад
@@SameenIslam No I am not. Why was I ranting too much :)
@SameenIslam
@SameenIslam 4 года назад
@@davidfox4253 haha no it's an app and a pretty funny one at that! Its creator also has the same name as you.
@luisv1308
@luisv1308 5 лет назад
Thank you so mucho for this amazing video!
@liorpolak1391
@liorpolak1391 2 года назад
Outstanding explanation!
@iommiandreifederico7675
@iommiandreifederico7675 Год назад
thanks, it actually let me through so i could download it.
@eduardorabanal2803
@eduardorabanal2803 4 года назад
thanks a lot bro, this videos are awesome
@Saranwity
@Saranwity 3 года назад
Amazing, thank you!
@mvip4927
@mvip4927 Год назад
Still working as of today! Thank you!
@uch195
@uch195 3 года назад
amzzing stuff sir, keep the good work up.
@hammadpervez4568
@hammadpervez4568 4 года назад
Love your tuts, Please make video about Best Practice in Flutter and Performance, and How to make an app Responsive in a best way. I am searching for these videos for a long time.
@MihaiMoisei
@MihaiMoisei 5 лет назад
Thanks for the explanation.
@LondonQuiTran
@LondonQuiTran 3 года назад
I applied for a development job and went through 3 interviews. After the 3rd interview, I was given a take-home assignment that requires us to know clean architecture. I know nothing about clean architecture but have experience developing apps. The company gave me some slides to learn clean architecture but I don't think they explain it that well. I am reading your written tutorials and then watching the videos and taking notes. You are saving me! Thank you!
@Hema115
@Hema115 2 года назад
Got the job?
@rifkiardiansyah616
@rifkiardiansyah616 5 месяцев назад
Got the job?
@louisphillipedubois659
@louisphillipedubois659 5 лет назад
Hi, first of all, thank you for the amazing content that you provide. Since I'm talking about provide, I'd like to know if you could make a video explaining the main differences about provide and bloc, or at least point me to a direction where I can understand when would be better use one than the other. Thank you very much. I'll be watching your amazing videos.
@posis9606
@posis9606 4 года назад
You are awesome. Thank you for all this knowledge. (Y)
@lalolalo8995
@lalolalo8995 4 года назад
Thanks, tuto is very clean
@ShivamJha00
@ShivamJha00 2 года назад
I was just thinking to get the uncle Bob's clean architecture book and you mentioned him :D
@aaronsantano238
@aaronsantano238 4 года назад
Hey Reso ! Amazing content I think you should make a video explaining the sequence of videos a person should watch that you have uploaded to be a good flutter developer
@gabrielgouvea4274
@gabrielgouvea4274 4 года назад
Great. There's an "flutter modular" that is very similar, if not the same approach. The difference is that they call it modules and not features. Also, has it has a package the are some routing and DI included along side with the pattern. I will watch the playlist, this kind of stuff is really good when the app start to grow. Thanks
@loicngou9592
@loicngou9592 5 лет назад
Thanks a lot , nice explanation
@johannb852
@johannb852 5 лет назад
Very nice video; waiting for the next one ;) If you have shared widgets across multiples features, would you prefer to put them somewhere in core or create a shared folder in feature? I would put them in a shared folder as my widgets might have the need for state management or access data Small edit: in your written blog post you don't speak about core folder at all.
@TranNguyen-pw5xo
@TranNguyen-pw5xo 3 года назад
such a elaborate explanation video
@jesselima_dev
@jesselima_dev 4 года назад
The best content about Flutter. Most of content out there focus on spaghetti UI. They do not care that much about clean or even a well defined and scalable architecture.
@ResoCoder
@ResoCoder 4 года назад
Thanks Jesse! I'm glad you find this valuable.
@AhsanAli-qc9pz
@AhsanAli-qc9pz 4 года назад
Thank you, soo much , I was searching everywhere to learn something useful for flutter. I studied the flutter.dev documentation but still I was not able to figure out how to map my study project and also i am unemployed I hope studying your tutorials help me getting a job. You are doing great !!! :-)
@ResoCoder
@ResoCoder 4 года назад
Thank you! The job will surely come - I'm putting all I know out there and I'm good, so you'll be too!
@dawidniegrebecki2205
@dawidniegrebecki2205 4 года назад
Great video!!!
@mustafashaikh7829
@mustafashaikh7829 5 лет назад
Nice explanation
@himanshudhakecha1789
@himanshudhakecha1789 4 года назад
Thank you. Its great
@KanishkaDilshan
@KanishkaDilshan 5 лет назад
Perfect!
@leonardomaia4186
@leonardomaia4186 2 года назад
What an amazing content
@someshsahu4638
@someshsahu4638 Год назад
Nice video thank you 🙏🏼
@mrdavidrees
@mrdavidrees 5 лет назад
Interested for the next part to see how the design holds up in a larger more complex app. I’ve seen really similar designs in a web service, but I’m worried that doing things like showing data from a cached source before responding with the updated data from an api will be difficult because the repo is separated from the bloc and the domain has to pass the update through.
@jasjastone
@jasjastone 5 месяцев назад
I just started view this tutorial i know it's old but trust me this stuff are amazing, the only down side in my opinion is the use of bloc i wanted it to be riverpod but anyways i could just adapt to riverpod thanks man you got my sub for this thanks
@capungfly5352
@capungfly5352 3 года назад
Amazing bro thanks
@pathakvivek7865
@pathakvivek7865 5 лет назад
feeling excited to learn such architecture pattern. Thank you so much, sir!
@aniketshukla540
@aniketshukla540 5 лет назад
sahi kaha
@pathakvivek7865
@pathakvivek7865 5 лет назад
@@aniketshukla540 thank you!
@RobertWildling
@RobertWildling 5 лет назад
The waiting is gonna be hard now... a bit like Christmas: I am going to count how often I have to sleep until it is here! Except it is harder, because I don't know the date, when your next video will be published... Awesome!
@ResoCoder
@ResoCoder 5 лет назад
The next Christmas will be in just a few minutes then 😄
@mohamedel-helbawy2452
@mohamedel-helbawy2452 3 года назад
amazing ❤
@francescoandreuzzi113
@francescoandreuzzi113 5 лет назад
Nice video!
@GoWokeGoBroke1
@GoWokeGoBroke1 4 года назад
Thanks a lot!
@heshankumarasinghe3159
@heshankumarasinghe3159 2 года назад
Thanks for the vid
@borakececi8472
@borakececi8472 Год назад
Thank you so much
@__renesan
@__renesan 5 лет назад
Gracias, muy interesante.
@ahmedEchch
@ahmedEchch 3 года назад
What an amazing series. I would to know what's the theme are you using in vsCode ?
@TienTran-io8ue
@TienTran-io8ue 4 года назад
you the master
@user-nb6jw2id6q
@user-nb6jw2id6q 4 года назад
I'd like to see how it will be wonderful with the current architecture having applied "streaming architecture" for the structure of directories.
@jesselima_dev
@jesselima_dev 4 года назад
Done!!!
@batuhankrbb
@batuhankrbb 3 года назад
You made 24 minutes video and I studied it for 3 hours :D
@diego.coder26
@diego.coder26 4 года назад
For each table in my database do I have to create the 3 layers? data, domain and presentation? in the case of working with an api rest, already knowing your model
@arfaouicalippo2347
@arfaouicalippo2347 4 года назад
Thank you :-)
@KenanYusubov
@KenanYusubov 4 года назад
Hi. I have question that, we shoud create new feature for each screen or not? because we have pages, widgets for each feature. How do we divide project to features easily?
@dharmikthakkar3642
@dharmikthakkar3642 3 года назад
@Reso Coder Great explanation....but I have a question. If I got 2 features then do I have to create all folders again for 2 different features? Like do I have to create 2 data folders, domain and presentation folders?
@pringstom
@pringstom 2 года назад
thanks bro, im Peruvian
@PaulBrassington_flutter_expert
@PaulBrassington_flutter_expert 4 года назад
Thanks so much for this course, thanks for Get_It, thanks for the model. I'm converting my app into this model.
@jroamindia1754
@jroamindia1754 3 года назад
Hello sir ! As u have created feature folder. if i have login, register, edit profile so have to create different folder for each? and having the same stuff(folders) as number trivia folders have?
@Mahdi-td2ht
@Mahdi-td2ht 2 года назад
Very Helpful. I have a question! There is a features folder in your folder structure and you built a small app with only one feature number_trivia(number_trivia is the name of application and also the name of the feature). What is the folder structure if we have more than one feature? for example "login" and "number_trivia". Should we have two folders inside "features" folder and each folder has its three layers?(it means number_trivia inside features folder, is the name of the feature). or we have only one folder named number_trivia inside features folder and it has all login and Number Trivia api requests and ui inside it? (it means number_trivia inside features folder is the name of application)!
@aytunch
@aytunch 5 лет назад
Thanks for starting a series like this:D I will try to adopt your methodology. However you did not talk about testing at all in this video?
@ResoCoder
@ResoCoder 5 лет назад
Wait for the next part! We'll start with implementing the domain layer.
@kevinmcquown
@kevinmcquown 4 года назад
A more complex app would have many features that potentially share the same entities and data. Should those directory structures be up a level, outside the feature tree?
@ibrahimalazzawi2949
@ibrahimalazzawi2949 4 года назад
i was asking the same question... what did you end up doing?
@jessewright870
@jessewright870 4 года назад
Same question. Any input @resocoder?
@jorgewandersantanaurena422
@jorgewandersantanaurena422 4 года назад
I would use similar structure in core folder to hold those entities shared between features.
@TheSldsnake
@TheSldsnake 4 года назад
when you have to share u have to create an interface to abstract the complex
@user-yv8xl4ln7s
@user-yv8xl4ln7s 4 года назад
Did anyone find good structure in this case?
@alejandroulatefallas3011
@alejandroulatefallas3011 5 лет назад
I stumbled upon the channel by accident, glad I did! Nice stuff!! I do, however have a question. Usually when you go to Clean you end up placing your Business Logic inside your domain so you can eventually reuse it, this (for me) meant that your BLoCs should be a part of that domain layer, however you place them within the Presentation Layer, what is your main reason? My guess is that since it is updating the UI like a Viewmodel would do then you are placing it with the screen/view that it is working with. Again, nice channel and tuts.
@ResoCoder
@ResoCoder 5 лет назад
Exactly, BLoCs are are practically regarded as ViewModels in this architecture.
@wulfor3908
@wulfor3908 3 года назад
Which icon theme are you using for folders in project structure (VS Code)? 😍
@spiderion1
@spiderion1 4 года назад
I was following this course and implementing whatever was suggested in these 14 videos as it seemed to be amazing ... Then I wanted to dig more into the clean architecture and understand what was actually about. By watching the Unkle's Bob videos I could quickly understand that many things in this course were not actually following unkles bob concepts. One of those is widely using libraries. The purpose of Clean architecture is to keep everything segregated. This is not meant just between the objects inside our app but also from outside world libraries... dartz , get_it , flutter_bloc don't bring that many advantages. I can't see why we should use them. Conclusion: I am happy with the things that I have learned from this course "example unit testing and segregation of classes" but extremely unhappy with the overuse of libraries ... Now I need to rework my project as I have some problems with the flutter block and the way it works. Likely I didn't use get_it , the inheritedWidget works fine.
@ResoCoder
@ResoCoder 4 года назад
I can't argue with your findings. I just like to be somewhat practical and use libraries where they may help us. Thanks for watching the series!
@amanmalhotra4512
@amanmalhotra4512 Год назад
after 3 years what would you change in the layering/state management/separation that you proposed here ?
@DeepakSharma-st6dc
@DeepakSharma-st6dc 4 года назад
So i have to put up all those folders for each screen? Like say dashboard, profile, settings or any screen?
@nicoteufel
@nicoteufel 4 года назад
Are those features meant to be independent of each other? And if yes, there would be code duplication. What is the best approach in your opinion?
@ElVerdaderoAbejorro
@ElVerdaderoAbejorro Год назад
How do you make the folders look differently depending on how you name them? What plugin is that?
@LeagueRandomPlayer
@LeagueRandomPlayer 3 года назад
In which layer or where would you put the providers? are those below repository?
@abdelkrimbournane7332
@abdelkrimbournane7332 2 года назад
Would a mapper substitute the inheritance of models from the entities? (I believe it creates betters separation of concerns)
@sayurusandaru5546
@sayurusandaru5546 2 года назад
Hey, I love this video series and now I am using this architecture pattern for all of my apps. It makes it easier in reading and manages the code for larger projects. But I found that this pattern is less effective for only client-side-based apps like trivia apps, image editing apps, and todo apps. What architecture would you suggest for these types of applications? Please make a video series on that
@alihazem1479
@alihazem1479 2 года назад
I'm currently working on a todo app and was going to watch this course, did you find an answer to your question?
@SkyFallsLegion
@SkyFallsLegion 4 года назад
What categorizes as a 'feature'?