Save hours of Development time through Abstraction | Flutter Abstraction

Поділитися
Вставка
  • Опубліковано 10 лип 2024
  • Code Starts at - 06:29
    👨‍🏫 👨‍🎓 Written tutorial 💻⌨️
    www.filledstacks.com/post/dev...
    In this Flutter Tutorial about abstraction we go into why abstraction is needed, how it benefits you and how you can actually save hours of development time using fake implementations.
  • Наука та технологія

КОМЕНТАРІ • 125

  • @danteddy
    @danteddy 4 роки тому +5

    Man, you don't know how useful it is to me. Great vid !

    • @FilledStacks
      @FilledStacks  4 роки тому

      Awesome! That's great news. Happy i could help. Thank you for the feedback.

  • @aman.kataria
    @aman.kataria 4 роки тому +3

    Dude, I was researching about this today only. This is so awesome!
    I am so lucky.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      That's awesome 😎 i was hoping more people would be interested in this topic. Thank you for letting me know

  • @gmc254quads6
    @gmc254quads6 4 роки тому +1

    As usual, great video. Your website, the slack channel and UA-cam videos have become the go to place for great concepts.

    • @FilledStacks
      @FilledStacks  4 роки тому

      Yeeeaaah! Thank you 😊 And thanks for always watching and giving feedback. I really appreciate it 😉

  • @tylerthornton9611
    @tylerthornton9611 4 роки тому

    Another fantastic video. Thank you FilledStacks!

  • @renion9547
    @renion9547 4 роки тому +1

    Very useful information. Thank you. Every developer should know these things about abstractions and how they simplify the development process. This is huge.

    • @FilledStacks
      @FilledStacks  4 роки тому

      Thank you Renion. I think so too. It's a great help when coming up with certain solutions

  • @Iamnabink
    @Iamnabink 3 роки тому

    Best videos for mobile app dev in entire youtube . GREAT 😍😍😍😍😍

    • @FilledStacks
      @FilledStacks  3 роки тому

      Yeeeaaahhhh!! that's great to hear man. I think it's a pretty important concept as well. It allows you to get more work done at a high level before moving into the actual implementation. It's a very speedy way of development.

  • @getmmg
    @getmmg 4 роки тому +2

    Excellent stuff. This whole series on abstraction is going to be awesome and will be helpful for a lot of people.

    • @FilledStacks
      @FilledStacks  4 роки тому +3

      I hope so man. I was a bit worried that the video will be boring because of the content and lack of code, but I'm happy to see it'll be helping devs. It's a very important concept to get to the next level of an architecture.

  • @edzynda
    @edzynda 3 роки тому

    This is awesome! Great strategy. The great part of this technique is that by using the fake_implementation you already have a robust set of mock data to test against. Liked and subscribed!

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      Exactly! It sets you up so that you can continue development when your environment is down and makes your unit testing much easier given your data setup is complete.
      Thanks for subscribing.

  • @AllenWillian
    @AllenWillian 4 роки тому

    Bro this is awesome! Thanks for providing so much value

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      It makes me happy to hear that man. Thanks for letting me know.

  • @manikandansai9725
    @manikandansai9725 4 роки тому +19

    Great. Please upload video on unit testing with mock data. With dependency injection.

  • @jajasaria
    @jajasaria 4 роки тому

    I need this. Thanks for this awesome video.

  • @ericdrodgers
    @ericdrodgers 4 роки тому

    The most thorough explanation of Flutter. This is all your videos. Great work, the only person on UA-cam that gives production level tutorials. If I could change one thing.... Using provider only since it is recommended by Google. Thanks , I can figure out how to swap get it out in your other videos.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Thank you very much for your kind words. I do use provider, in all my videos :) I also use get_it with provider because it provides better readability to me and my team. I know provider can do the same things, but it doesn't read as well as a get_it locator file or get_it's service location in a viewmodel. For the team at FilledStacks it helps a lot to have readable code because you might have to dive into a code base that's a year old if no-one else has time to implement the feature so readability is top on my list for a maintainable software agency team.

    • @ericdrodgers
      @ericdrodgers 4 роки тому +1

      @@FilledStacks that is just 1% that I would change out of the 99% that I wouldn't. My difficulty understanding Get It and your Filled Stacks Provider Architecture comes from me being a newbie.
      If you are bored one day, and want to throw the newbies a bone, please do an app using provider only, crud, Google/Email sign in and Firebase Storage. I would even pay for a tutorial from you with an app like that. Please let me know I am very interested and would like to work something out. Your architecture is impressive

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      @@ericdrodgers Thanks. I have done a provider only architecture ( ua-cam.com/video/VgrK_LlQRJ4/v-deo.html ) after you watch that video you'll be able to see the difference. All you'll change is you'll be injecting the services through the constructor instead of getting it from the locator in get it. That's the only difference. You don't have to pay for anything, it's all free and I've already made the video for provider only implementations. See if it's easier to understand :)

    • @ericdrodgers
      @ericdrodgers 4 роки тому

      @@FilledStacks Link doesn't work. More than likely it's the Provider V3, I watched it and I use it without get it. Maybe a full a app without Get It and Provider Architecture with Firebase Firestore and Storage Crud. That is a wishlist, you are doing a wonderful job, I have zero complaints. I imagine most people would like to see how YOU would put a full app together without Provider Architecture and Get It with Firebase Firestore and Database Crud. Again this is a wishlist. We newbies don't really use Get It or the Provider Architecture so it is a wishlist. Also, thanks for replying, I appreciate the replies from the Flutter God, thank you.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      @@ericdrodgers Link should work now. The last parenthesis was taken as apart of the link. If that't the wish then most people should probably watch my Firebase and Flutter series to see how I put together a full mobile application. I released episode 9 this morning :)

  • @storylineteam
    @storylineteam 4 роки тому +1

    Great video! As a .Net developer, i really hate the lack of interfaces in dart. i Hope google makes this improvement in the future. Until then abstract classes are the best way around.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Yep. I come from the same land as well. Xamarin, Mvvm cross, .net core, ASP and Service Fabric. Interfaces are definitely missed :(

    • @jacobladder638
      @jacobladder638 3 роки тому

      What's the difference. Also .NET developer. I get the difference in .NET, but what would the use case be here?
      In Dart you can implement multiple abstract classes, You can do dependency injection with abstract classes. It doesn't seem to have much in common with abstract classes in C#. When you label a class as abstract it really behaves like an interface as it ignores all implementation. Only when you extend a class does it behave like C# abstract class.

  • @RaymondAtivie
    @RaymondAtivie 4 роки тому +1

    This is a GREAT video. extremely useful. thank you.
    I would really love if you could expand on this abstraction with Provider. and how i can still listen and all. but great video.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      The functionality i showed doesn't take away any of Providers existing functionality. There's nothing to change to make it listen and all that. Everything else stays exactly the same you'll just use your interfaces instead of the implementation so anything else stays the same.

  • @muhammadyasser9929
    @muhammadyasser9929 4 роки тому

    Awesome, Awesome, Awesome!

  • @aseemshrey400
    @aseemshrey400 4 роки тому

    Great tutorial :)

  • @DamiBiker
    @DamiBiker 4 роки тому

    I love your tutorials ! .. I have one question ... i always see you using both GetIt and Provider ... Do you use both packages in your production apps ? Or ... which one is better when it comes to dependency injection packages ???

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Thank yoooouuuu! I use it like this setup (ua-cam.com/video/kDEflMYTFlk/v-deo.html) exactly. I use Provider for the statemanagement (ChangeNotifier) and get_it for service location / dependency injection depending on how it's setup. It's personal preference. I feel like the ProxyProvider code for dependency injection is too verbose, hard to maintain and is waaaaay to complicated for literally no added benefit over get it where it's all basically one line. Registration / injection / location and maintenance. I don't like more code for less functionality so I still use both until Provider can become less verbose and injecting Providers where there is no context becomes easier than the current ProxyProvider setup.

    • @DamiBiker
      @DamiBiker 4 роки тому

      @@FilledStacks Thank you, master !

  • @pratikmhatre4815
    @pratikmhatre4815 4 роки тому

    Superb

  • @alejandroulatefallas3011
    @alejandroulatefallas3011 4 роки тому +1

    Nice vid mate! I do, however have a question. Repeating the boolean in two different files is my main concern right now with this implementation, I think it would be better if you could somehow set the environment for your app. I have being taking ROTGP's approach (github.com/ROTGP/flutter_environments) but I'm certain that mixing it with get it and your own approach could be the base of something really good.

    • @FilledStacks
      @FilledStacks  4 роки тому

      I don't know how I missed this comment. UA-cam notifications suck! Thanks for letting me know about this approach, the code I presented wasn't entirely production ready. It was more about understanding abstraction so that you can speed up development. The link you posted here doesn't exist anymore.

    • @alejandroulatefallas3011
      @alejandroulatefallas3011 4 роки тому

      @@FilledStacks No problem, in any case, the approach I linked was deprecated since Flutter now has a feature to create flavors, I guess it would be a good idea for a video. You can check it out in here flutter.dev/docs/deployment/flavors and medium.com/@animeshjain/build-flavors-in-flutter-android-and-ios-with-different-firebase-projects-per-flavor-27c5c5dac10b or flutter-academy.com/build-flavors-environment-specific-configuration/ . In any case, it's something to think about and discuss, feel free to ping me if you want to talk about it.

  • @bearbare4495
    @bearbare4495 4 роки тому +1

    This is awesome! thanks, i really like this approach. But i have a question, how to keep user logged with this approach?

    • @FilledStacks
      @FilledStacks  4 роки тому

      Thank you. Abstraction has nothing to do with any implementation details that's the point of it. You can keep a user logged in by keeping a token stored in secure local storage that you use on startup to login again or make all your requests with. Any way you prefer to implement won't matter. Because you have abstraction :)

  • @tbm98
    @tbm98 4 роки тому

    Very helpful 😊

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      That's Good news. Exactly what I'm trying to do.

  • @gusdoh
    @gusdoh 4 роки тому

    Hi Dane!
    Can you add an explanation of how 'provider_setup.dart' is used in the building app? You have coded that file but hasn't been used in any files.

    • @FilledStacks
      @FilledStacks  4 роки тому

      Hi Gus. This video goes over my architecture using Provider only for dependency injection and state management. ua-cam.com/video/VgrK_LlQRJ4/v-deo.html

  • @leoncapl2367
    @leoncapl2367 4 роки тому

    hi! Love your tutorials, but in this there seems to be an issue for me. Using getit I get an error about constructor and using provider way I get another error. GetIt error: The class 'GetIt' doesn't have a default constructor.
    Try using one of the named constructors defined in 'GetIt'.
    Thank you
    EDIT:
    I just tried doing it like this:
    GetIt locator = GetIt.instance;
    instead of:
    GetIt locator = GetIt();
    Is this the correcxt way of using it now. I mean there are no errors now :)

    • @FilledStacks
      @FilledStacks  4 роки тому

      Thank you! And yes, that's the correct way. It was updated a bit after this episode came out.

  • @dop3ch3f
    @dop3ch3f 4 роки тому

    Genius bro

  • @drimadoh
    @drimadoh 4 роки тому

    Hi, I noticed going through your tutorials that sometimes you use a Final properties in the data model (using it as an immutable object) and sometimes as standard properties... So which one do you recommend and why?

    • @FilledStacks
      @FilledStacks  4 роки тому

      Both. If your value will be updated during the lifecycle of your model then you CANT use final because it can only be assigned one value. If you value will won't be updated then use final.

    • @drimadoh
      @drimadoh 4 роки тому

      @@FilledStacks ok got that thanks. Is there any performance advantages (or any other advantages you know about) for using immutable models? i.e. is it better to do it this way: create a new model (with final properties) with the updated values each time the model needs to be updated of course; rather than just updating the model the usual way?

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      @@drimadoh It's definitely more maintainable knowing that the only way to update the values is through the constructor. It'll be easier to debug and log in a single place where values are updated.

  • @mohabmagdy4155
    @mohabmagdy4155 4 роки тому

    I wonder how the theoretical part was not boring many thanks for sharing your information

    • @FilledStacks
      @FilledStacks  4 роки тому

      Hahaha i was literally thinking it's going to be so boring but it seems that it's not 😊 thanks for watching. I'm happy to share the knowledge 😁

  • @oliverbytes
    @oliverbytes 4 роки тому

    Super great tutorial! Please do one for Error Handling soon? What's the most proper way to handle exceptions please.

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Thank you. It depends on what you're handling. Try catch with good logging works well. If the user needs feedback, either a snack notification or a toast or a dialog will work. You can watch my logging video and dialog service and combine those two.

    • @oliverbytes
      @oliverbytes 4 роки тому

      @@FilledStacks thanks a lot.. what about if the API returns different kinds of error.. for example, the api can return a json like { .errors: {} } and sometimes will return {error: {}} and what if it returns a html error file for example.. how do we properly handle these kind of stuffs

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      @@oliverbytes It's all dependent on your app. If you want to display it you display it, if you want to log it then you log it. If the user has to choose the next action then present a confirmation dialog with options. There's no specific rule for that. If you have a structure to your errors just check if it's there then perform the action you'd like to take.

    • @oliverbytes
      @oliverbytes 4 роки тому

      @@FilledStacks I get your point it all depends to us individually.. anyway I really appreciate everything you do.. thanks a lot

  • @Khari99
    @Khari99 3 роки тому

    Do you have an example of this working in Stacked instead of Provider at 11:32?

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      Yes, in stacked you supply the dependency to the dependencies list of the StackedApp annotation.

  • @g-luu
    @g-luu 4 роки тому

    The best part of the video 0:00 to 5:41 :)

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      haha, I thought it would be the most boring part :) Thanks man

  • @YasinIlhan61
    @YasinIlhan61 4 роки тому +1

    I see you are using get_it with provider package. As you know Provider package has also ProxyProvider for dependency injection, Is there a special reason for it? ( except get_it not need context)

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      I do use get_it mostly. I explain the reasoning in my architecture videos. Mostly the amount of code required to maintain ProxyProvider injection is a lot more, meaning much more than get_it as well as the fact that it's easier to read and understand what you're doing with get it (for beginners, or any dev that might want to help on a project). It's all personal preference, which is why I made an architecture video covering provider + getit setup and then when v3 was released with ProxyProvider I covered that as well. I still prefer get it over ProxyProvider personally. It's been much easier to use, handle, maintain (especially with constructor signature changes) etc.

    • @YasinIlhan61
      @YasinIlhan61 4 роки тому +1

      @@FilledStacks thanks for detailed answer. I will check your videos.

  • @harishkandekar266
    @harishkandekar266 3 роки тому

    Awesome !!! thanks ,
    can you please add a working example too with github link

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      You can check it out at github.com/filledstacks/flutter-tutorials

  • @harishkandekar1098
    @harishkandekar1098 3 роки тому

    awesome Thanks !!! tutorial can u please add working example with a git link

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      This had no actionable code so I don't think there's a git link for it. But you can go check at github.com/filledstacks/flutter-tutorials

  • @pathakvivek7865
    @pathakvivek7865 4 роки тому

    nice..

  • @Hiro-yn4vt
    @Hiro-yn4vt 4 роки тому

    Hi, I love your contents. But if possible, can you please remove or lower the volume of the background music as it is somehow distracting?
    Thanks a lot for your videos. :)

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Hey, thanks for the feedback. I have been lowering it progressively but it also only plays when I'm not coding. I'll make it even softer if possible in the next video.

  • @harishkandekar1098
    @harishkandekar1098 3 роки тому

    can you make a video on Bloc pattern , also tell how can we make use of bloc pattern along with this kind of abstraction

    • @harishkandekar1098
      @harishkandekar1098 3 роки тому

      thanks in advance

    • @FilledStacks
      @FilledStacks  3 роки тому

      Hey, we don't use BLoC in production so I have no experience with it. But the point of this video is to write code in an abstracted manner regardless of the state management you're using. It'll be the exact same video. it's not based on a specific state management setup, I just happen to use the one we like to use. But it can be applied to anything you're using.

    • @harishkandekar1098
      @harishkandekar1098 3 роки тому

      @@FilledStacks thank you so much for reply, I will try to use with bloc pattern

    • @FilledStacks
      @FilledStacks  3 роки тому

      @@harishkandekar1098 You're welcome :)

  • @oliverbytes
    @oliverbytes 4 роки тому

    Can you please do a tutorial about doing Globals, Constants, Utils, Singletons stuffs?

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Ill add it to my list. What specifically do you want to know?

    • @oliverbytes
      @oliverbytes 4 роки тому

      @@FilledStacks Thanks a lot... I want to know the best/proper way possible on how to implement a constants file, globals file, utils file in a project.. should we create a singleton for a Utilities class or just static class? a library file? those kind of stuffs.. would really appreciate it.. thanks so much for your great tutorials I'm sure you're helping a lot of developers like me doing more proper coding...

    • @oliverbytes
      @oliverbytes 4 роки тому

      @@FilledStacks Maybe an example of a Utils file that can do useful stuffs like generating MD5, writing and reading from files, getting user agent, getting the current platform name etc... I'm curious how you would set up

    • @FilledStacks
      @FilledStacks  4 роки тому

      @@oliverbytes Oh, you want specific implementations. I thought you meant more around name spacing and all that. To do what you mention I just wrap my functionality into a service like my latest video for any package and use it through my service. There's nothing special I do there. Encryption and getting files I all do through using a package that I wrap up in a service.

    • @FilledStacks
      @FilledStacks  4 роки тому

      @@oliverbytes Okay, I'll do a tutorial on name spacing and how I handle it.

  • @skillkrio
    @skillkrio 2 роки тому

    Hi Dane help me out, I read some java tight and loose coupling article which will be same in dart too I think. I had certain doubts in loose coupling watched several youtube video and article but still couldn't grasp certain points. I will explain what i understood and what confuses me . In loose coupling we restrict the direct coupling between classes. But in tight coupling we are bound to classes. Let's take an example. I have one Main class and another different class with the name Apple. I am creating a instance of this class in Main class by
    Apple apple =new Apple();
    //Apple is tightly coupled to Main class
    apple.eat();
    //If eat method signature is Changed to drink in the Apple class ofcourse we need to change the method name here in Main class also right?.
    Let's see loose coupling
    class interface Fruits{
    void drink();
    }
    Class Apple implements Fruits {
    @Override
    public void drink (){
    Printing some message;
    }
    }
    class Main{
    public static void main(String [] args){
    Fruits apple = new Apple ();
    //loose coupled ??
    apple.drink();
    }
    }
    If i Change the method signature in loose coupling from drink to pour . I need to change the code in 3 different places.
    1. method signature inside Fruits interface(drink to pour)
    2.class Apple(method override from drink to pour)
    3.inside Main class(method call from apple.drink to apple.pour)
    What's the point of using loose coupling here. In tight coupling once I modify the coupled class(Apple) i am forced to update the Main class. In loose coupling also I am doing the same process .what's the point of using it.
    The only benefit that I can feel through loose coupling is the interface reference type .for example
    Tight coupling code
    Main class{
    //boiler plate code
    Apple apple = new Apple();
    }
    In future if i create Mango class i need to create another object in Main class like Mango mango = new Mango();
    Loose coupling code
    Main class{
    //boiler plate code
    Fruits apple =new Apple():
    //In future if i Change Apple() to Mango() no error will occur here because of the interface reference type(Fruits).
    }
    And what is code extensibility in interface if i introduce new method signature all dependents are broken and force us to implement the new method. Then how to safely extend interface without breaking existing code
    Please help me to understand with this fruit analogy even with Java or dart.

    • @FilledStacks
      @FilledStacks  2 роки тому +1

      Hey, awesome questions and it's good that you're thinking about it. I won't be able to answer all of it because the reply on youtube doesn't lend it self to long answers in the notification bar. But there are some general points that I want to say.
      1. Removing hard dependencies (tight coupling) works better for maintenance of your business logic. If you write your business logic against an interface, regardless of how it's implemented or if the names of that interface will change it provides a much more objective way to determine failure points or swap out implementations as needed (which doesn't happen often)
      2. It makes your code unit testable. If you have a hard dependency on an implementation it means you can't mock it out when you want to write automated tests .Unit, integration or end-to-end. This means you have a heavy burden of manually testing all your product code through the user interface provided, whether that's a mobile app, cli or website. Which is prove to be thousands of times longer than unit tests. This means everytime you change something in that implementation class (if you'll HAVE to do regression if quality is a priority for your work).
      I don't quite know exactly how to answer your questions but I can say, from my experience, if you don't see the requirement for something in your code then you probably don't need it. I live by solving a problem when you have one and not solving a problem that you could potentially have, if something had to happen in a scenario that might appear.
      Write code the way you want and then slowly apply design principles when you feel the pain of doing things a certain way. For instance, if you at somepoint say, I don't want to spend 7 hours testing my code manually anymore I'm gonna write tests to cover all the functionality I find critical. You will HAVE to remove the hard dependencies so you can mock out those responses when the test are running. Until then you really won't need it if you don't see the value in it. Don't do things just because they're written somewhere and considered to be good practice. Use your own assessment of it, and apply as you see fit.

    • @skillkrio
      @skillkrio 2 роки тому

      @@FilledStacks Thanks alot for taking your time for replying me Dane💜

  • @Droidates
    @Droidates 4 роки тому

    I am a beginner, how to learn advance flutter?

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Build 10 basic apps using only the flutter knowledge you have. That should show you what you don't know yet then you spend another 6 months improving those apps. When you're done with that do it all over but using additional software principles like SOLID

    • @Droidates
      @Droidates 4 роки тому

      @@FilledStacks Thanks, can you please let me know how to design ui that fit every screen and set the width, height and font size according to the device/screen.
      I have used media query but that is working fine in some devices and awful in some.
      Thanks for your help 👍

    • @FilledStacks
      @FilledStacks  4 роки тому

      @@Droidates Yes, watch me responsive UI architecture or the responsive UI video for Flutter web. It shows you how to use my responsive_builder package.

  • @uptourgames3735
    @uptourgames3735 3 роки тому

    By interfaces, you mean UI right?

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      No, I mean an interface. The public facing API from a class. All public parts of a class, the functions, getters, setters or properties.

    • @uptourgames3735
      @uptourgames3735 3 роки тому

      @@FilledStacks Thanks. Just wanted to confirm. KEEP UP THE GREAT WORK

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      @@uptourgames3735 You're welcome! And thank you. I will try my best to keep making videos.

    • @uptourgames3735
      @uptourgames3735 3 роки тому

      @@FilledStacks HEY! Can you do a video of 'Preparing to build a production-ready app?;

    • @FilledStacks
      @FilledStacks  3 роки тому +1

      @@uptourgames3735 Hey, what would a video like that have in it? I just followed the steps on the app store / playstore as they ask things I make it. Nothing specific that I do

  • @Pheenam
    @Pheenam 4 роки тому

    The SingleChildCloneableWidget interface is removed, and replaced by a SingleChildWidget interface and two implementations:
    SingleChildStatelessWidget
    SingleChildStatefulWidget

    • @FilledStacks
      @FilledStacks  4 роки тому +1

      Thanks for sharing Nam!

    • @Pheenam
      @Pheenam 4 роки тому

      @@FilledStacks Thank you for your videos!!
      No worries, was having an issue and thought others might as well

    • @FilledStacks
      @FilledStacks  4 роки тому

      @@Pheenam I appreciate the consideration. It helps getting those updates in the comments. I can't keep up with all the changes in the framework as it changes.

  • @SahharYoucef
    @SahharYoucef 4 роки тому +1

    My problem is that i only understand using examples 😅

    • @FilledStacks
      @FilledStacks  4 роки тому

      haha, do you understand the concept of registering an implementation against an interface and developing against the interface and not the implementation?

  • @jackellis7812
    @jackellis7812 4 роки тому

    Hi, sent you an email about working with you on a long-term flutter project. Please get back to me soon. Thank you!

    • @FilledStacks
      @FilledStacks  4 роки тому

      Awesome. I will get back to you as soon as it's mail time. Which is now :)

  • @TheEkkas
    @TheEkkas 3 роки тому

    Praat met 'n Afrikaanse aksent, of hou jou bêk. :) Lekker vids.

    • @FilledStacks
      @FilledStacks  3 роки тому

      haha Dankie 😁 Afrikaanse aksent kanie weg gesteek word nie 😛

  • @beaurondamons6187
    @beaurondamons6187 4 роки тому

    My bru waar in SA is jy... dont hide the accent lol

    • @FilledStacks
      @FilledStacks  4 роки тому

      Haha ek sal nog nooit my accent weg steek nie, I'm too proud of it 😬.... ek is in Western Cape.