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

  Рет қаралды 278,712

Reso Coder

Reso Coder

Күн бұрын

📗 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

Пікірлер: 221
@dalinarkholin4169
@dalinarkholin4169 4 жыл бұрын
Amazing stuff, as usual. You're literally the best Flutter KZbinr out there. Keep up the good work!
@ResoCoder
@ResoCoder 4 жыл бұрын
Thank you very much!
@ShadowInfest
@ShadowInfest 4 жыл бұрын
@@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 👍
@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!
@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.
@jonathan3087
@jonathan3087 4 жыл бұрын
Perfect explanations, perfect speed. Fantastic job. Best Flutter Tutorial I've seen on KZbin! Hats Off to you Sir!
@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. 💙
@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.
@sargamagarwal4544
@sargamagarwal4544 2 жыл бұрын
After watching ton of videos...I finally found yours who took time to go into the depth of things. Thank you
@Majkelo879
@Majkelo879 4 жыл бұрын
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!!
@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.
@Vellutia
@Vellutia 4 жыл бұрын
What an amazing series. I'm so thankful for all of the efforts you put into this series. Keep it up
@hexdump8590
@hexdump8590 4 жыл бұрын
Man, claps to you. Top quality and for free. Thanks for all this content. Really appreciated.
@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!
@marekchojecki4746
@marekchojecki4746 4 жыл бұрын
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
@ernestbarrachina5771
@ernestbarrachina5771 4 жыл бұрын
Best video I've ever seen about flutter architecture! Thank you very much for the content!
@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 4 жыл бұрын
Well explained in a simple and understandable way, now I understand flutter as pro
@user-cg7yd4lx3i
@user-cg7yd4lx3i 3 ай бұрын
The first person who explained why you have to have both models and entities, great stuff!
@yanuyusuf7721
@yanuyusuf7721 4 жыл бұрын
This is what I need. Love it, big thanks, excellent work dude!
@omarhalabi889
@omarhalabi889 Жыл бұрын
Thank you from Syria, This is literally the corner stone I was looking for.
@jasnamitrovic1650
@jasnamitrovic1650 3 жыл бұрын
ex iOS now Flutter dev here. just found out about this content and amazed by it! Keep up the great work.
@mohammedmokhtar2482
@mohammedmokhtar2482 Жыл бұрын
your illustration is extremely clear and simple
@SEOTADEO
@SEOTADEO 2 жыл бұрын
Thanks for this great video! Coding is easy, but designing a good architecture is quite a challenge.
@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 4 ай бұрын
Got the job?
@TaweechaiMaklay
@TaweechaiMaklay 4 жыл бұрын
Cool guy, looking forward to seeing the next lesson.
@divinemaredi8298
@divinemaredi8298 3 жыл бұрын
What would I do without this video? Thanks a lot!!
@luisaaronpacorachangana7622
@luisaaronpacorachangana7622 4 жыл бұрын
What a good video, it brings a lot to good practices for development with flutter. Greetings from Peru!!
@guilhermelopes7809
@guilhermelopes7809 2 жыл бұрын
VERY good explanation. Thanks a lot for sharing this with us!
@h3w45
@h3w45 Жыл бұрын
really amazing to see this advanced stuff
@moubiswasEdits
@moubiswasEdits Жыл бұрын
The file structures are really awesome and it helps me as a beginner developer, Thanks for the video
@aladdin8494
@aladdin8494 4 жыл бұрын
You are doing a great work man keep going 😀
@tannerhoughton6233
@tannerhoughton6233 4 жыл бұрын
VERY HELPFUL!! Thank you 🙌🏼
@umidjonshoniyozov162
@umidjonshoniyozov162 4 жыл бұрын
its amazing and usuful thanks.Keep up the good work!
@vOnez212
@vOnez212 4 жыл бұрын
This is great! Thank you!
@mazenalsakkaf
@mazenalsakkaf 4 жыл бұрын
This is cool stuff. Keep it up. I am learning something good here. Cheers
@eduardorabanal2803
@eduardorabanal2803 4 жыл бұрын
thanks a lot bro, this videos are awesome
@luisv1308
@luisv1308 4 жыл бұрын
Thank you so mucho for this amazing video!
@JJ-vm6wg
@JJ-vm6wg 3 жыл бұрын
Really really nice work! Thanks so much.
@louisphillipedubois659
@louisphillipedubois659 4 жыл бұрын
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.
@mual77
@mual77 4 жыл бұрын
Good job. Keep up the good work!!
Жыл бұрын
Thank you so much! This was super clear.
@liorpolak1391
@liorpolak1391 2 жыл бұрын
Outstanding explanation!
@gabrielgouvea4274
@gabrielgouvea4274 3 жыл бұрын
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
@mustafashaikh7829
@mustafashaikh7829 4 жыл бұрын
Nice explanation
@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.
@iommiandreifederico7675
@iommiandreifederico7675 Жыл бұрын
thanks, it actually let me through so i could download it.
@mvip4927
@mvip4927 Жыл бұрын
Still working as of today! Thank you!
@MihaiMoisei
@MihaiMoisei 4 жыл бұрын
Thanks for the explanation.
@Saranwity
@Saranwity 3 жыл бұрын
Amazing, thank you!
@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
@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!
@loicngou9592
@loicngou9592 4 жыл бұрын
Thanks a lot , nice explanation
@KanishkaDilshan
@KanishkaDilshan 4 жыл бұрын
Perfect!
@TranNguyen-pw5xo
@TranNguyen-pw5xo 3 жыл бұрын
such a elaborate explanation video
@lalolalo8995
@lalolalo8995 4 жыл бұрын
Thanks, tuto is very clean
@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.
@uch195
@uch195 3 жыл бұрын
amzzing stuff sir, keep the good work up.
@ShivamJha00
@ShivamJha00 2 жыл бұрын
I was just thinking to get the uncle Bob's clean architecture book and you mentioned him :D
@dawidniegrebecki2205
@dawidniegrebecki2205 4 жыл бұрын
Great video!!!
@mrdavidrees
@mrdavidrees 4 жыл бұрын
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.
@himanshudhakecha1789
@himanshudhakecha1789 4 жыл бұрын
Thank you. Its great
@johannb852
@johannb852 4 жыл бұрын
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.
@leonardomaia4186
@leonardomaia4186 2 жыл бұрын
What an amazing content
@pathakvivek7865
@pathakvivek7865 4 жыл бұрын
feeling excited to learn such architecture pattern. Thank you so much, sir!
@aniketshukla540
@aniketshukla540 4 жыл бұрын
sahi kaha
@pathakvivek7865
@pathakvivek7865 4 жыл бұрын
@@aniketshukla540 thank you!
@someshsahu4638
@someshsahu4638 Жыл бұрын
Nice video thank you 🙏🏼
@posis9606
@posis9606 4 жыл бұрын
You are awesome. Thank you for all this knowledge. (Y)
@capungfly5352
@capungfly5352 3 жыл бұрын
Amazing bro thanks
@RobertWildling
@RobertWildling 4 жыл бұрын
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 4 жыл бұрын
The next Christmas will be in just a few minutes then 😄
@mohamedel-helbawy2452
@mohamedel-helbawy2452 3 жыл бұрын
amazing ❤
@GoWokeGoBroke1
@GoWokeGoBroke1 4 жыл бұрын
Thanks a lot!
@francescoandreuzzi113
@francescoandreuzzi113 4 жыл бұрын
Nice video!
@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.
@heshankumarasinghe3159
@heshankumarasinghe3159 2 жыл бұрын
Thanks for the vid
@__renesan
@__renesan 4 жыл бұрын
Gracias, muy interesante.
@jasjastone
@jasjastone 4 ай бұрын
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
@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 3 жыл бұрын
Did anyone find good structure in this case?
@borakececi8472
@borakececi8472 Жыл бұрын
Thank you so much
@TienTran-io8ue
@TienTran-io8ue 4 жыл бұрын
you the master
@jesselima_dev
@jesselima_dev 4 жыл бұрын
Done!!!
@ahmedEchch
@ahmedEchch 3 жыл бұрын
What an amazing series. I would to know what's the theme are you using in vsCode ?
@arfaouicalippo2347
@arfaouicalippo2347 4 жыл бұрын
Thank you :-)
@batuhankrbb
@batuhankrbb 3 жыл бұрын
You made 24 minutes video and I studied it for 3 hours :D
@pringstom
@pringstom 2 жыл бұрын
thanks bro, im Peruvian
@aytunch
@aytunch 4 жыл бұрын
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 4 жыл бұрын
Wait for the next part! We'll start with implementing the domain layer.
@wulfor3908
@wulfor3908 3 жыл бұрын
Which icon theme are you using for folders in project structure (VS Code)? 😍
@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.
@alejandroulatefallas3011
@alejandroulatefallas3011 4 жыл бұрын
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 4 жыл бұрын
Exactly, BLoCs are are practically regarded as ViewModels in this architecture.
@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?
@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?
@amanmalhotra4512
@amanmalhotra4512 Жыл бұрын
after 3 years what would you change in the layering/state management/separation that you proposed here ?
@sayurusandaru5546
@sayurusandaru5546 Жыл бұрын
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 Жыл бұрын
I'm currently working on a todo app and was going to watch this course, did you find an answer to your question?
@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
@Mayanktaker
@Mayanktaker 4 жыл бұрын
PLEASE make a mini series on DIO.
@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?
@roxelrollmendoza6918
@roxelrollmendoza6918 3 жыл бұрын
Anyone watching this in 2021? haha Thanks for this tutorial great content I am new to flutter :)
@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)!
@OttoAkama
@OttoAkama 2 жыл бұрын
I think we could name repositories in domain layer: abstract_repo and the one in the data layer to be: repo_implements. It could be easy to understand the differences as such. My beginner opinion.
@PAD637
@PAD637 Жыл бұрын
I think you'd normally prefix the abstract repo with "I" so it would "IRepo", and the implmenetation would just be "Repo", and if you were to look at that repo, you'd see that the class declaration would have something that looks like this "class Repo implements IRepo"
@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!
@abdelkrimbournane7332
@abdelkrimbournane7332 2 жыл бұрын
Would a mapper substitute the inheritance of models from the entities? (I believe it creates betters separation of concerns)
@ronytesler
@ronytesler 3 жыл бұрын
Are all episodes updated for today? For example, do you take into consideration the 'provider' package?
@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?
Flutter TDD Clean Architecture Course [2] - Entities & Use Cases
40:23
What does larger scale software development look like?
24:15
Web Dev Cody
Рет қаралды 1,3 МЛН
3M❤️ #thankyou #shorts
00:16
ウエスP -Mr Uekusa- Wes-P
Рет қаралды 15 МЛН
Looks realistic #tiktok
00:22
Анастасия Тарасова
Рет қаралды 100 МЛН
Was ist im Eis versteckt? 🧊 Coole Winter-Gadgets von Amazon
00:37
SMOL German
Рет қаралды 39 МЛН
Русалка
01:00
История одного вокалиста
Рет қаралды 6 МЛН
Flutter Clean Architecture Visual Explanation
6:15
Flutter Mapp
Рет қаралды 26 М.
I've been using Redis wrong this whole time...
20:53
Dreams of Code
Рет қаралды 337 М.
Cool Tech You’ll LOVE!
21:41
Snazzy Labs
Рет қаралды 69 М.
The Most Underrated State Management Tool in React
23:35
Cosden Solutions
Рет қаралды 13 М.
Generative AI in a Nutshell - how to survive and thrive in the age of AI
17:57
3M❤️ #thankyou #shorts
00:16
ウエスP -Mr Uekusa- Wes-P
Рет қаралды 15 МЛН