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

Поделиться
HTML-код
  • Опубликовано: 2 ноя 2024

Комментарии • 227

  • @Inandoutpk
    @Inandoutpk 2 дня назад +1

    For the ones who do not udnerstand it in first go . I'm coming back to these videos 3rd time with 2-3 months gap in between. Previously It was heard for me to get these concepts but now I understand.... SO KEEP COMMING BACK TO GOLDEN CONCEPTS.
    Thank You Reso Coder, I LOVE YOU:)

  • @techstudio7331
    @techstudio7331 5 лет назад +22

    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!

  • @LondonQuiTran
    @LondonQuiTran 3 года назад +15

    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!

  • @davidfox4253
    @davidfox4253 5 лет назад +51

    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 года назад +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.

  • @dalinarkholin4169
    @dalinarkholin4169 5 лет назад +203

    Amazing stuff, as usual. You're literally the best Flutter RUclipsr out there. Keep up the good work!

    • @ResoCoder
      @ResoCoder  5 лет назад +7

      Thank you very much!

    • @ShadowInfest
      @ShadowInfest 5 лет назад +2

      @@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 5 лет назад +2

      Didn't know Dalinar knew flutter, how's Urithuri ?

    • @dalinarkholin4169
      @dalinarkholin4169 5 лет назад +1

      @@Manish-cgain OMG what a surprise! Urithiru is great. Gotta watch out for Odium though!

    • @laminebendib
      @laminebendib 2 года назад

      @@dalinarkholin4169 You're putting your newly acquired writing and reading skills to good use 👍

  • @tintin537
    @tintin537 4 года назад +6

    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.

  • @КириллЛескин-к1ж
    @КириллЛескин-к1ж 7 месяцев назад

    The first person who explained why you have to have both models and entities, great stuff!

  • @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.

  • @marekchojecki4746
    @marekchojecki4746 5 лет назад +7

    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

  • @Vellutia
    @Vellutia 5 лет назад +26

    What an amazing series. I'm so thankful for all of the efforts you put into this series. Keep it up

  • @sargamagarwal4544
    @sargamagarwal4544 2 года назад

    After watching ton of videos...I finally found yours who took time to go into the depth of things. Thank you

  • @omarhalabi889
    @omarhalabi889 2 года назад

    Thank you from Syria, This is literally the corner stone I was looking for.

  • @tityseptiani8584
    @tityseptiani8584 5 лет назад +3

    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 5 лет назад +3

    Perfect explanations, perfect speed. Fantastic job. Best Flutter Tutorial I've seen on RUclips! Hats Off to you Sir!

  • @Majkelo879
    @Majkelo879 5 лет назад +3

    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!!

  • @jasnamitrovic1650
    @jasnamitrovic1650 4 года назад

    ex iOS now Flutter dev here. just found out about this content and amazed by it! Keep up the great work.

  • @kevinmcquown
    @kevinmcquown 4 года назад +46

    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 года назад +5

      i was asking the same question... what did you end up doing?

    • @jessewright870
      @jessewright870 4 года назад +4

      Same question. Any input @resocoder?

    • @jorgewandersantanaurena422
      @jorgewandersantanaurena422 4 года назад +3

      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

    • @БилиЏин-ь6ц
      @БилиЏин-ь6ц 4 года назад

      Did anyone find good structure in this case?

  • @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 года назад +1

      Thanks Jesse! I'm glad you find this valuable.

  • @EricBichara
    @EricBichara 5 лет назад +6

    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!

  • @mohammedmokhtar2482
    @mohammedmokhtar2482 Год назад

    your illustration is extremely clear and simple

  • @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. 💙

  • @hexdump8590
    @hexdump8590 4 года назад

    Man, claps to you. Top quality and for free. Thanks for all this content. Really appreciated.

  • @divinemaredi8298
    @divinemaredi8298 3 года назад

    What would I do without this video? Thanks a lot!!

  • @AhsanAli-qc9pz
    @AhsanAli-qc9pz 5 лет назад

    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  5 лет назад +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!

  • @ernestbarrachina5771
    @ernestbarrachina5771 4 года назад

    Best video I've ever seen about flutter architecture! Thank you very much for the content!

  • @ntirinigasenior7901
    @ntirinigasenior7901 5 лет назад

    Well explained in a simple and understandable way, now I understand flutter as pro

  • @moubiswasEdits
    @moubiswasEdits Год назад

    The file structures are really awesome and it helps me as a beginner developer, Thanks for the video

  • @h3w45
    @h3w45 2 года назад

    really amazing to see this advanced stuff

  • @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.

  • @ShivamJha00
    @ShivamJha00 2 года назад

    I was just thinking to get the uncle Bob's clean architecture book and you mentioned him :D

  • @johannb852
    @johannb852 5 лет назад +3

    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.

  • @SEOTADEO
    @SEOTADEO 2 года назад

    Thanks for this great video! Coding is easy, but designing a good architecture is quite a challenge.

  • @luisaaronpacorachangana7622
    @luisaaronpacorachangana7622 5 лет назад

    What a good video, it brings a lot to good practices for development with flutter. Greetings from Peru!!

  • @spiderion1
    @spiderion1 5 лет назад

    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  5 лет назад +1

      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!

  • @RobertWildling
    @RobertWildling 5 лет назад +1

    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 лет назад +3

      The next Christmas will be in just a few minutes then 😄

  • @guilhermelopes7809
    @guilhermelopes7809 2 года назад

    VERY good explanation. Thanks a lot for sharing this with us!

  • @iommiandreifederico7675
    @iommiandreifederico7675 2 года назад

    thanks, it actually let me through so i could download it.

  • @batuhankrbb
    @batuhankrbb 3 года назад +1

    You made 24 minutes video and I studied it for 3 hours :D

  • @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

  • @yanuyusuf7721
    @yanuyusuf7721 4 года назад

    This is what I need. Love it, big thanks, excellent work dude!

  • @mvip4927
    @mvip4927 2 года назад

    Still working as of today! Thank you!

  • @umidjonshoniyozov162
    @umidjonshoniyozov162 4 года назад

    its amazing and usuful thanks.Keep up the good work!

  • @Рюрик-л2к
    @Рюрик-л2к 5 лет назад +15

    How to separate app by features if we have auth use case?
    We must to make Auth feature and use this feature in others to get info about user?

    • @anshpathania1816
      @anshpathania1816 4 года назад

      Yeah, Use auth verification in both backend and frontend, to ensure only authenticated users get access to it .

    • @Рюрик-л2к
      @Рюрик-л2к 4 года назад +1

      @@anshpathania1816 My question was different.
      My question was what features need to be created for authorization.
      Now I realized that I need to create separate features for authorization and for the user.

  • @sayurusandaru5546
    @sayurusandaru5546 2 года назад +1

    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?

  • @pathakvivek7865
    @pathakvivek7865 5 лет назад

    feeling excited to learn such architecture pattern. Thank you so much, sir!

  • @uch195
    @uch195 3 года назад

    amzzing stuff sir, keep the good work up.

  • @wulfor3908
    @wulfor3908 4 года назад +3

    Which icon theme are you using for folders in project structure (VS Code)? 😍

  • @liorpolak1391
    @liorpolak1391 2 года назад

    Outstanding explanation!

  • @JJ-vm6wg
    @JJ-vm6wg 4 года назад

    Really really nice work! Thanks so much.

  •  2 года назад

    Thank you so much! This was super clear.

  • @tannerhoughton6233
    @tannerhoughton6233 4 года назад

    VERY HELPFUL!! Thank you 🙌🏼

  • @TaweechaiMaklay
    @TaweechaiMaklay 5 лет назад +1

    Cool guy, looking forward to seeing the next lesson.

  • @louisphillipedubois659
    @louisphillipedubois659 5 лет назад +1

    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.

  • @TranNguyen-pw5xo
    @TranNguyen-pw5xo 3 года назад

    such a elaborate explanation video

  • @mazenalsakkaf
    @mazenalsakkaf 4 года назад

    This is cool stuff. Keep it up. I am learning something good here. Cheers

  • @mustafashaikh7829
    @mustafashaikh7829 5 лет назад +2

    Nice explanation

  • @someshsahu4638
    @someshsahu4638 Год назад +1

    Nice video 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

  • @roxelrollmendoza6918
    @roxelrollmendoza6918 3 года назад

    Anyone watching this in 2021? haha
    Thanks for this tutorial great content I am new to flutter :)

  • @MarioDaglio
    @MarioDaglio 2 года назад +1

    Where do you place code to navigate form one page to another?
    Is a page == a feature?
    Thanks for the great series, btw

    • @Smart_773
      @Smart_773 Год назад

      did you got the answer? if yes please tell

    • @MarioDaglio
      @MarioDaglio Год назад

      @@Smart_773 this other is much better ruclips.net/video/RMiN59x3uH0/видео.html

  • @aladdin8494
    @aladdin8494 5 лет назад

    You are doing a great work man keep going 😀

  • @eduardorabanal2803
    @eduardorabanal2803 5 лет назад +1

    thanks a lot bro, this videos are awesome

  • @amanmalhotra4512
    @amanmalhotra4512 Год назад +1

    after 3 years
    what would you change in the layering/state management/separation that you proposed here ?

  • @ahmedEchch
    @ahmedEchch 3 года назад

    What an amazing series. I would to know what's the theme are you using in vsCode ?

  • @lalolalo8995
    @lalolalo8995 4 года назад

    Thanks, tuto is very clean

  • @luisv1308
    @luisv1308 5 лет назад +1

    Thank you so mucho for this amazing video!

  • @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.

  • @mual77
    @mual77 5 лет назад

    Good job. Keep up the good work!!

  • @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?

  • @Saranwity
    @Saranwity 3 года назад

    Amazing, thank you!

  • @KenanYusubov
    @KenanYusubov 4 года назад +1

    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?

  • @posis9606
    @posis9606 4 года назад

    You are awesome. Thank you for all this knowledge. (Y)

  • @Mahdi-td2ht
    @Mahdi-td2ht 2 года назад +1

    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)!

  • @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 лет назад +1

      Exactly, BLoCs are are practically regarded as ViewModels in this architecture.

  • @leonardomaiadev
    @leonardomaiadev 2 года назад

    What an amazing content

  • @ronytesler
    @ronytesler 3 года назад

    Are all episodes updated for today? For example, do you take into consideration the 'provider' package?

  • @dawidniegrebecki2205
    @dawidniegrebecki2205 4 года назад

    Great video!!!

  • @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?

  • @pringstom
    @pringstom 2 года назад

    thanks bro, im Peruvian

  • @MihaiMoisei
    @MihaiMoisei 5 лет назад

    Thanks for the explanation.

  • @serdtsev
    @serdtsev 3 года назад

    Hi. Not sure if you will see this comment, but I will ask: I am making an app that periodically refresh data from external API. Where should I put this auto-refresh timer and how to control it better (started to at least)? My guess is that this part should be done inside of BLoC or inside of repository.

  • @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.

  • @capungfly5352
    @capungfly5352 4 года назад

    Amazing bro thanks

  • @РоманСергеевич-э6ю
    @РоманСергеевич-э6ю 2 года назад

    That's Great! THX very much!
    But link on written tutorial is unavailable and thats make me unhappy 😭.
    Maybe there is on another resource?

  • @OttoAkama
    @OttoAkama 3 года назад

    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 2 года назад

      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"

  • @vOnez212
    @vOnez212 5 лет назад

    This is great! Thank you!

  • @ALIMOIZMOIZ-im3fl
    @ALIMOIZMOIZ-im3fl Месяц назад

    if i have more features then will we have to add three layers presentation,data and domain layer in each feature folder??

  • @himanshudhakecha1789
    @himanshudhakecha1789 4 года назад

    Thank you. Its great

  • @loicngou9592
    @loicngou9592 5 лет назад

    Thanks a lot , nice explanation

  • @ElVerdaderoAbejorro
    @ElVerdaderoAbejorro 2 года назад

    How do you make the folders look differently depending on how you name them? What plugin is that?

  • @ayoubelbadaoui7000
    @ayoubelbadaoui7000 3 года назад +1

    why your courses are not premium ?? this is a an entreprise level apps architecture you are providing for free ??this is historical thank you from the bottom of my heart

  • @김영현-l1t1u
    @김영현-l1t1u 5 лет назад

    I'd like to see how it will be wonderful with the current architecture having applied "streaming architecture" for the structure of directories.

  • @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?

  • @mohamedel-helbawy2452
    @mohamedel-helbawy2452 3 года назад

    amazing ❤

  • @josephsantos1783
    @josephsantos1783 4 года назад

    So, the features is every "Feature" of an entire app? For example, a feature can be a "login" screen, another feature is "home" and all of these features should be separated in folders and every folder contain all of these folders (data, domain, presentation, etc).

  • @susandahal8277
    @susandahal8277 Год назад

    Is this pattern still completely in function or any changes are needed?

  • @SkyFallsLegion
    @SkyFallsLegion 5 лет назад +10

    What categorizes as a 'feature'?

  • @heshankumarasinghe3159
    @heshankumarasinghe3159 2 года назад

    Thanks for the vid

  • @tudorm6838
    @tudorm6838 4 года назад

    ime Clean Architecture is rather hexagonal, not linear as Presentation-> Business-> Persistence. Of course, in the "hexagon" we will find this PBP viewpoint. Presentation-> Business-> Persistence is the "father" of Clean Architecture.

  • @diego.coder26
    @diego.coder26 5 лет назад

    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