right so let us start with the just a simple question so can you introduce yourself first of all uh yeah so um myself Gan like um uh I have completed like my graduation um graduation from like uh here from India from a uh from btech CSC background from a university called like Shri University Jammu and Kashmir and um I started learning flter like in 2022 uh then PR uh from YouTube mostly from YouTube and um after that I joined a startup like in uh around like 2023 February um yeah then worked on some like uh
a real kind of um scenarios and uh currently like I am have like around 10 months of experience like in flutter of working on real projects like app these things Okay cool so um you have around 10 10 months experience with the flutter right uh yeah yeah um so what kind of the apps that you have ly build using the flutter so what kind of app like um can you uh like um kind of apps like uh what like is it like um uh like a banking application or is it like a social uh networking
apps or is it e-commerce app so what kind of the apps apps that you have currently built okay okay okay so so it's like close to like social networking app so uh it's close to like social networking app uh for example like the uh the name of the app is party end for currently uh which I am working so basically it's app which list uh which list parties which are happening uh in Goa so basically they are uh when anybody comes to go like um they mostly their question is like where is the party so
there was like no good platform which were cing that problem so uh we have CED that problem like we are um so we become a we become uh we make that we make the app and we are like the marketing platform between the venues which have like music events parties uh these kind of things and between the users so uh we basically list like all the parties uh listing of parties is done and um uh users can create their own events also organizers create their uh own events so uh uh yeah and if there is
any brand brands also create their own brand so this basically it's a platform to C the like the music events Market and also like um because it's a very big question here because it's is like party capital of India so basically we are solving that problem so okay that's cool um so how many member uh in your flutter team uh currently like there are like I guess four members uh in the team four members in your team so uh what you basically do in in your um as a flutter developer so basically I work on
the like UI uh UI part and the functionality one because startup is um not a very big team so yeah both like I work on the UI and like some of the features cool uh so what kind of the like the project management um the tools do do you use zir or some other kind of any so we use we use clickup for the management of the tickets I see does it follow like a can Canan style or the aile style or the waterfall uh it's like uh I guess aile follow aile like a trative
approach cool yeah um Okay so that's cool and um um have you ever uh like U um written any test cases on the flutter uh not yet uh we have not like written the test test cases yet but like we have a plan uh uh to do it but not that's so um so you have been working 10 months so what what you think about the flut what kind of the uh solution or problem it can uh solve for for the organization or or the companies so basically uh basically after working with with I understand
like uh it is it is a very easy um like good to go for like uh the user interface uh plus it is very good for like startups to start their like experiments um because because because initially uh initially they are on the IDE stage so they have to um showcase their like um product to the like investors so it is very good for because they don't have to manage two teams for like iOS and and and Android so you uh you only write like uh one uh once ACC Cod and it is like working
on like both platforms so the so from business point of view uh also and like cost effective is uh this is very cost effective also uh plus plus the ecosystem is like now very great if you see like they are solving the issues like on daily basis we are getting like releases like stable releases of flutter so yeah so first is like the it is very good for a startup system second um it is fast also like compared to like other Frameworks I feel uh like react native and also stable also and um it is
solving like the um money problem like for startups like for initially they have they have to maintain like both Android and iOS so now they now they don't have to do like uh that thing uh so yeah these are the things and also like it has good feature like hot restart and um so we can easily like see the changes uh so these are the things like I mostly feel it's very good that's cool um so what what do you think um just now you mentioned that uh yeah you basically mentioned the uh usefulness of
the flutter right um from According to your experience what you think like uh what are the drawbacks or the limitation that we get from the flutter uh drawbacks yeah or or the limitation what you think from the if if you are if a team or company using a flutter yeah sometimes like uh sometimes like because it's still in the like uh um growing stage so sometimes what I feel like um because when I started like there was not I guess um that much good uh tutorials or like resources uh at that time that go like
very deep in it like I found one or two articles uh uh one name is like flutter D boens that guy he written like very deep articles uh uh which gives a a very in-depth knowledge of the like framework so I feel like that that one part is missing uh but uh currently I found like your um CH uh mobile Academy like website and then I thought like that is the best resource for me uh if I get like around like one year ago or something like I'll be more better than that so one thing
that I was like um uh uh was a problem of like tutorials so for me uh that was the I don't think whether it is a limitation or not but I H key and that was one and the second was like sometimes um uh they make changes so uh they make like huge changes so it like breaks the maintenance of the app like so the second was that and the third was like it's um some some sometimes we have to build like the whole thing because it got deprecated or it is not there because it's
it's a new thing so for the native we have to build the whole thing by itself so that is the mostly the limitation otherwise it is like very good many production big production uh in production also it is like many big companies are also using it so cool yeah but they had a good team so they manage the native they have buil their native things also by themselves so yeah I hope so like these will be now I think first and second are now getting cleared why because uh personally I say like uh the course
you have made like it's very awesome it can't be I think that much effort can't be given by like any other people like it's very in depth we can see like just by seeing the structure cool thank you so I these if these kind of courses and all these things will be there so we can C like other uh we can see like how to build other things if there are some limitations also because we need like clear concept how things are going and like event Loop these are the things like I seen like in
your course only I I haven't seen like on uh YouTube like someone is telling about what is event Loop how it is coming because in Java JavaScript I usually found that someone is telling event Loop is happening this and this is the false stack and these things are going on so yeah because sometimes uh what happened we don't know the concept so we tell that as a limitation also yes that's good okay so um you just mention about the react native have you ever worked with the Rea native before uh no I didn't uh work
with like react native but like I just study like what are the issues there like sometimes so but I haven't wored with yet because I like I work with like JavaScript and then it is like very uh kind of like that and JavaScript like kind of similar in uh some of the parts so I after like because there are some good resources for JavaScript so I learn that then I um see that also so that becomes like very a little bit easy for me cool okay um yeah U the next thing is uh I think
if you haven't used react native um that's that's cool um it's quite similar if we if you see the things um but uh uh uh let's talk about the um wi get in the flutter um can you uh according to your experience and your knowledge what you think about the stat less and then the stateful widget uh like I didn't understand like think what what you think what are the differences or like you can explain like when to use the state and like when to use stat less this kind of stuff okay okay got it
so stat less uh stateless is basically used most of the time when we when we don't have to manage any State kind of thing State like data uh some for example um we are changing uh we are changing something and because of that change uh it's it's reflecting on the uh UI like it's pure data like we have some kind of hardcoded also or or it is just like one time data we gets it and the rebuild occurs so for stateful like we have to manage some states like for uh we are managing the state
of an animation controllers or a or there we have any list of data that we are managing so basically State full is used uh when we have to manage some kind of State in that because the name itself implies State full so that is what it is so is basically used when we don't have to manage any state and state is used when we have to manage some kind of state mostly okay of the that's cool um so both of the state L and the uh State F has the uh build method right we need
to override it so um can you explain about the bill method why we need to override or what does it actually does what what it actually does yeah what is the bill method in both of the stateful and then the uh stateless Vis so basically um build build method is like it it kinds of like trigger the rebuild of the like uh um rebuild of the visits that that we defined in like inside it so it's like a method like which kind of like returns uh the visit like the what we Define inside it yeah
basically it Returns the uh widget right so uh it Returns the uh what you call or the elements that we Define yeah yeah and um basically we said the stat less is immutable right so yeah stat less and stateful both are like immutable objects so what does the immutable actually mean here so immutable means like um according to me uh what is something which which don't change it can be like it can be replaced with the same thing but it don't change for example there are two object objects uh user one or and user two
in user uh user one uh all the fields are final so it will not change but we we can create a new object from it like for uh from that like using any copy with method or something so it's like that IM imitable that that can't change imit something that which don't change it can be replaced with the same thing but it it will not change okay cool okay that's so um in the state full vet we have the um set state right State yeah set state so uh can can you can you explain what
what does actually the set state does so Set Set uh C basically trigger triggers the rebuild of the UI uh there is something called marks inside Cate something called a Mark Mark needs rebuild I guess not currently wrong so it triggers like that method so because of that um the whole Elementary started like seeing what are the dirty things and uh basically after that trigger like it rebuilds the whole UI s like basically trigger the rebuild of the UI yeah where where where it is called yeah that's cool so basically it's um marks the we
get uh the we get to be uh dirty and and then s the is to be uh rebuil in the next frame right that's cool um and uh another thing about the uh uh like let's say if you have a a login form right and uh we basically use the uh uh form there right and in the form we have to pass in the key right yeah yeah form so we basically use a global key there to pass as a form key so why we why we use a global key in the form do you
have any idea why we use a glob because there is a different kind of the keys in the flutter but in the uh form we we always use a global key right and uh do you have any idea why we actually use the global key there yeah so basically um we use key uh to identify to identify because there are many text form filled so to identify the like the text form field with its key because otherwise what happen like um what happens inside I guess like they without using the key they are not able
to differentiate sometimes so that's why use key to uniquely identify key is uh key is the thing to uniquely identify something was some some uh someday I was reading something like about this keys and I found out like uh two State uh there are two objects but they are not uniquely identified like by their states so the flutter um framework itself got confused so uh so in that case we use a key to identify like uh bo Okay cool so um that's uh um think that we use a key um to identify or to uh
manage manage the states right but uh regarding the uh regarding the uh global global key that we use in the um in the uh form or anywhere that we use Global key the main um Point here in the form is that you need to access the state of the form right because you need to it um based on the global key uh um only has the option to access the state and rest of the keys like uh you have the value key you have the uh I think the object key right so they don't have
a option where you can access the uh the state so that's the uh main point of the using a global key in the form and um the the point that you is is also correct because we need to identify wiget or uniqueness of the with did right yeah and um let's uh move to the uh next question here uh have you ever uh used about the uh inherited wiget yeah inherited wiget yeah so can you explain what what is actually the inherited wied or how it works so yeah yeah so basically what happens uh with
what happens with certain State like it's uh uh it rebuilds the whole UI in case like Cate rebuilds the whole UI and sometimes what we need uh so if the uh there is a visit like there are for example let's say ABC there are three visits ABC and um both A and C wants the state want to access the state of the uh visit B so if uh so normally what we do we pass dependencies through Constructor uh injection but if they are like uh so if they but but if they are like uh many
visits which want the same state like B uh so we have to pass it multiple times so what so we uh we have a visit like inherited visit which can maintain that state of B and uh we can easily provide it to the like descendants so uh and we don't have to pass it like again and again so basically inertive VIs is something like um which maintains a common state type of thing uh which can be like easily uh provided to The Descendant descendant visits of the tree yeah yeah that's that's the cool thing um
you can manage the you can access the uh state that uh your parents uh we get this holding right you can easily hold otherwise you have to pass down the uh the data or or the information back to the your child will gets yeah that's cool and uh next thing is U like uh have you ever uh um had a time to like uh understand the the the Tre tree that we call in the flutter right we have the vget tree we have uh the element tree right um basically uh what what you what what
knowledge you have about the this trees like uh render render Tre tree render object tree and then the we have the element tree and then we have the uh Wicket tree right yeah okay so basically there are three trees in flutter so vget tree is just a name we use but vget Tre is nothing it's is just a configuration vit is it's just a configuration like there is some kind of text and it is an immutable confence basically Elementary ele Elementary maintain so there is visit then uh visit Tre then comes element Tre then comes
render tree render tree is the basically the tree which actually renders the things like text um and like painting like painting like all these works are done by the render Tree Elementary basically just maintains the like uh the linking part like the context we use so basically it Like Glue both the things so uh for for let's say example so for example let's say there is a text with it and um Elementary element then Elementary is there then render Tre so basically there there would be some kind of render box sorry for text we have
H text which uh which maintains the like um the linking part and uh through which like we see uh whether the whether the change has happened or what we have to render so basically Elementary is some something like which which is used for like getting the location or where the visit is render Tre is basically used like to render that thing yeah render it to the UI right so it's the graphic graphical part send it to the graph uh graphic to The Graphic engine to render it to the UI yeah yeah yeah that's cool and
U do you have any um idea or the knowledge like uh how actually that flutter decides uh whether that part of the uh widget is updated with the new configuration or whether it to uh actually re rebuild and redisplay it and create a new uh wiget out of it or just to uh provide the same uh previous uh the widget that it holds so do you know like uh do you have any idea like how actually it is going to decide it yeah yeah so basically uh as I previously said like there is a u
whenever the uh state of the visit changes a math is triggered Mark uh element like from the element point of view I'm talking elements Mark needs rebuild I guess build I guess so the the visit which has changed it see like the whole visit has changed or like it compare with uh it's like key uh key and like other par for example if let's say if it is a type of the object right type of the object and the key right so yeah yeah so in that case it sees whether I need to replace the
whole visit or if if if uh or if they are same we don't we just have to change something we don't have to replace the whole viit because sometimes the whole visit is not replaced if if the runtime if the runtime type are same the whole V not replac just the thing which has changed only that replace and if the whole vit is changed like the run times and one parameter is more both then they replace because viit is an immutable configuration so we can't uh change that we don't change digit so in that case
we have to replace that viget with the other text Vis yeah that's so that because of this all kind of the logic and algorithm they use uh the flatter is much faster right it's build build building feat that we get from the flatter that's cool uh and uh uh let's talk about the uh widget right so in the W uh when once you create the uh widget we have to pass in the key right so there is option to be pass in the key and um that key can be null right so sometime we pass
in but sometime we don't pass in uh most of the time we don't really care about uh passing in the key so what what scenario do you think that we pass in the key to that particular wiet so some scenarios are like suppose we have [Music] some so let's say there are like like multiple text form Fields so if they are multiple text form field and like we are changing the focus uh we are managing the uh like there is some icon so on clicking that on tapping the the color of the icon change from
like gray to white or something and they're multiple so if we manage the state like um with a with a single inher let's say or with any state man so what happens when uh when we click on one uh it change the it change the like icon icon color of like uh if we have three to four Fields all because it not correctly identifies this so in that case like we pass a uh key so that like it differentiate uh like the text fields from each other and in one case in one more case like
suppose we have some uh list uh list also so sometimes like I have just read not sure what that but they we are deleting something uh we are deleting something uh in that list it it like some sometime it get jumbled so we have to currently identify like the order for like in maybe we if we have to do some kind of reshuffling or that so it like it get flatter itself like internally get confused so in that case also like we have to pass key unique key so that like all the list elements are
uh itself like uh uh differentiated with each other so okay that's that's cool um so uh like if if you have a um let's say um home H page right or the home screen and um um in that home screen you add another let's say you add the uh Banner right uh let's say home Banner that is another another widget right it's a separate class uh stateless widget and um in the uh home home screen is a stateful and uh once we set the state there like let's say you tiger a set state with the
button click or something like you set and in in that you have a home Banner where uh you have previously passed in the uh the uh home Banner widget you pass in the key right and in the uh we get rebuild on on the on the set State you triggered uh uh it will triggered uh we get rebuild again right in the home screen and suppose the U that changes the key right if that changes the key uh of the uh if you passing the new key to the let's say home Banner on the Constructor
um what do you think is this going to create uh tiger uh build method in the um build method in the uh let's say home Banner or is it just is going to uh reuse the previous uh widget oh I think maybe something did you understand the question so yeah I guess I understand like you are asking the um uh the key got changed yeah like so if I if you pass if you once the you rebuild the uh the parent widget and you pass in the parent widget you rebuild the widget and then changes
the uh new key or or the Constructor key that you pass into the child widget if it's going to change does it call the rebuild function in the child viset or it's not going to or it's going to skip that rebuild uh method basically I guess it will call the method but uh maybe flutter will not be able to identify uh it will do some like award or random thing yeah I think uh it will call the build method because uh you change the key right so uh key once once just now you mentioned that
in the uh Elementary it tracks the uh right uh in the and then the render object tracks whether there is a certain thing changes like whether it's a key changes or or the type of the wiget changes so here we changes we change the key and once the key is changed then the it will again set it to Mark as to rebuild or set it to as a dirty element then it has to call the build method but even if you set the uh set state in your parent uh widget here but you don't change
the key for for your uh child widget so flutter is just going to reuse that and it's not going to call the bill method again on the child widget because it's the same key with the same type right and no data has been changed on that particular uh configuration so it's going to reuse that without going to call the rebuild method in the child right so this is the uh how the flutter improves the internally the performance so that's why the flutter developer don't have to like put all the efforts to um maintain or have
the better performance app yeah yeah so that's cool um okay so uh let's uh say about the um so uh how much of experience do you have with the uh Native like uh iOS and then the uh Android oh I don't have experience like with Native but like I um I like I learned some of the like uh for like Android and iOS part like some because of like the what is Manifest file and um manifest gr so I just like learn about these things because we have to make changes in that so but I
didn't work with like the native okay so in the flutter you also can call the method or or the functions in the native directly right so what how what what features in the flutter do you think we are going to use like if you want to call some functions from the uh uh Native side do you have any idea so I guess like for that uh platform channels are used to like call the if you want to call some native part of the uh Native part thing cool so okay yeah so I I I didn't
know like how to do that but like I I know like like uh how it is like called like platform channels I I have to learn this okay so uh just now you mentioned of the menist file in the Android right so what what what you think about it can you explain it yeah basically um basically manifest file like um it it's kind of like the center thing uh it it has to like know what we have to run as soon as the app uh starts and uh what are the like what are the different
things like we have defined like for the theme and which activity should run first like whether we have to show the splash screen first or like before that we want to any activity so basically it's kind of a center which know like all the things of like from style to color and all like which part of the activity we should run and like all like all um that kind of thing okay Co so um so if if you want to set a a set a permission so we are going to use that one too right
and uh about the um um in the iOS we have the similar thing right so uh we have the pist info right yeah info. pist yeah yeah so um we we do the same thing right so defining the permission um adding the all of the uh configuration to all of it that's so um and um let's um uh next will be about the uh in in the production app like let's say we are building a production app right and uh we are going to uh set up the different kind of the uh environment like in
in the real once you are in the production app uh once you are performing the uh project we have a development team we have the QA team right and then we have the management team or or or or the stakeholder that's going to um manage that particular or or or have the overall permission of how the app should be doing doing and what are the uh functions features that we are are going to implement so there are basically we have let's say a three uh three kind of the uh environment um they have his own
environment QA need to test it in own environment and then the uh and then the uh rest of the uh the management team or or the let's say your stakeholder have to um test the app um we can't use the same server configuration right uh we have to have a different server for each of them because for them um uh we just need it for development and we change the things regularly and we Twix the thing regularly um so that should be for just for the development purpose right not for the uh QA to test
their actual uh like the tickets and then the uh and for for the management or the stakeholder they have to test something in the Real Environment right so uh in the flutter how how do you think that we can configure all of this uh in the flutter app yeah definitely um actually we are using like that kind of thing like in our like a startup like for the we have like three flavors like development uh then staging and then production so all the kind and development we are using different Dev data uh different database for
production we are using uh different database because we can't like juggle like both the database otherwise like the data will be it will create problem so yeah we are like using like flavors right yeah so do you have any idea about the flavor uh what what is the flavor and um um how do we use it in the uh the Android and then the iOS do you have any idea or have you ever configured it or do you have ever used it so I used it but I I didn't configured it because uh there is
a company called like very good Ventures so uh if you use like their they have some commands which like autogenerate like the environment like um staging velopment and production uh we just have to make some changes but like it will uh most of the changes it can like uh configure like in your project setup yeah okay yeah so in Android like you get the like the uh Brad broad environment Main and Dev so yeah okay um yeah so basically it's U um the flavor is mostly uh or the part of the Android uh it has
the building feature for for the flavors so you can actually configure multiple flavors in the uh Android but uh in iOS you don't have a building feature that you can actually use it like a flavor is not there so you have to actually configure this schema and uh with that schema you can configure a different kind of the something like a flavors that we maintain in the in the uh Native Android um so it quite different in the iOS and in the iOS Android is quite uh different because Android by default it supports the uh
flavors and uh with these flavors we can configure this kind of the production Dave and Q on kind of the information that's cool um you got some idea on it that's that's pretty good and uh next thing is like uh uh let's say uh you have a requirement to integrate a payment right and payment Gateway let's say strap which is uh most popular in the common right uh let's say you have to integrate a strip to your app where the user can make a payment and that provides you with the uh key right so Stripes
comes with the uh key that you have to um set it to your uh app right it's not that uh like it's not that that a private key but uh still can be exposed uh right um the main the key is stored in the um privately in the server site but in the client side you still need to store a key and let's say you have to be um you are building a app that is related to the uh um like a banking application right so where uh you need a lot of the Securities and
right they have the pen test and they are going to um do all the security test for your application um in the flutter like uh how you are going to uh store that particular key so that uh you minimize the risk of exposing that particular key do do you have any knowledge or idea about Yeah Yeah so basically what we can do uh there is a package called like dot e uh in EnV file also like where we can store like these kind of like environment variables or like constant and things so one is that
and second we can use like Google secret manager also like for storing like important API so basically and um so basically when we when we build when we build the thing we can provide like um uh that thing uh to to access to get access uh to get access them basically we use like uh these things to like to minimize the risk because we can't Define it in the file and push it to the otherwise it will be exposed so yeah basically we use like uh these two things to like to uh manage like the
keys so that we don't have to like directly uh expose it okay good and uh when it comes to the security let's say uh how you are going to uh protect like um if you are releasing the uh let's say a secure app or or the banking app right uh let's say how you are going to secure it so uh you prevent it from the uh reverse engineering right so um the main point is like how you are going to prevent it uh from some like the uh the uh hacker or or let's say from
some some bad guys that want to uh reverse engineer your uh APK file or or even the IPA file so have ever uh had some experience like protecting from the reverse engineering no like that I don't have okay but maybe we can have some kind of encryption uh we encrypt our file uh so that it would not be very easy to reverse engineering well now there are many good algorithms to encrypt like RSA or something so like let's say what are the do you know the default uh feature that comes with the dot and the
flutter any default feature do you think do you have ever used um know so there is a a feature called The Dot code of uh you can check the documentation for that one um it the um off skate the code of the dot right it basically means the randomize the dot code and which um doesn't prevent from the reverse engineering but uh uh once the code is off it's a very random things that you get and you need to reverse it back right and um that takes the uh lot of the effort for the uh
the to the reverse engineer um so we can use that also that is the building feature where you can uh use the dot code to be ass fiscated and also um like there are some packages that we can use um have you ever used any of the security packages uh from um have you ever tried any security packages no I don't think so like I us any Security package like so I don't Security package like it's a Security package or not like like for storing some important information we use flutter Secure Storage uh yeah that's
are just for the storing the sensitive information where you can store the uh your user data securely right but uh like when you are building the secure app you need to um uh find whether the the the app is uh like let's say the phone has been jailbroken or whether it has been uh like um um rooted in the Android right so you need to know whether that is the that is a little there in the uh Android or whether somebody's trying to attach some debugger to the your app like where they can um reverse
your application right reverse engineering so there are different things that once they get the APK they can do so uh there are certain packages and the tools that we can use to like detect it right so uh it's basically can't call the uh run time when the app is running it can detect so there are some of the tools and the package es that we can use to actually uh to build the app to maintain the security of the app and um basically the um mobile app that uh like the banking application mostly used so
previously we built one crypto app uh where we had utilized that particular uh like the uh feature so like where the user where the where we need to uh because they were Prov doing the pen test right so we had to include that in the application so that's cool and um you got some uh pretty good ideas and um so next would be I think it's going to be time here so can can you give me some of the um packages uh that you use daily in in your uh flutter app uh yeah yeah so
basically we have used like like um uh ge location package and uh like Shimmer package and um crashlytics and Firebase Firebase storage Firebase score and uh share plus uh for carousal we have something I don't remember but yeah uh U ID uu ID and um for the cas cash Network image cash Network image for the uh HTTP request uh what package are you using so for now STP request I don't think because we are using Firebase oh yeah using Firebase yeah because startup so we currently using Firebase so for that we uh didn't use anything
like for that so okay but I guess HTTP I have used or notbe Dio or something uh have you ever used the graph Quil no not no not just use the graph qu that's cool okay so um um you are using the Firebase right so Firebase provide the stream of that so for for that uh how you manage manage the stream are you using any packages to uh do maintain the stream of the data from the Firebase like uh maintain the data from you using the live DV or what kind of the DV you are
using with the firee like we using like Cloud fire store Cloud fire store yeah so you are not using the live DB right real time DB right have you ever used the uh stream in the flutter oh yeah stream we have used okay so uh what what kind of you do you use any third party packages to uh um work with the stream or you just use the stream uh building feature from the uh flutter and do like you asking about like some stream Builder kind of thing or yeah like let's say you continuously receiving
the information from the server right so you have to maintain that the stream of data right so how how you maintain it so yeah you we used stream Builder because we use block State Management so we have used uh in some some of the places for managing it like we have used stream Builder also and uh yeah we have used stream Builder like somewh but we don't directly like uh manage it from the Firebase like there is a state management layer which like first the that uh the called uh the meod which return returns that
stream from the Firebase which get through the like that uh man State Management layer and that it will pass to the UI so yeah stream Builder we have used future Builder also I have used so okay cool so um uh uh what what what do you think about the um like the uh clean architecture have you ever uh used the clean architecture so I haven't used it but um I have like seen it like clean architecture okay um yeah um have you um do you know about the uh some of the principles like uh say
Drive principle or or the CH kiss principle have you ever used this or applied in your project yeah yeah so solid principles I know like like solid principles I know about it like single responsibility principle then open closed uh principle this C substitution principle interface segregation uh principle and then dependency injection Yeah so basically the first principle was about like single responsib single responsibility principle is like every class or something has a single responsibility to do because it should not have like multiple responsibilities so the first principle like tells that like any class or something
should change because of One Reason Not of like like any class or something should only um have a single responsibility to do okay so you have so ID like let's say dependency inversion right so do you have do you have any uh idea how does the dependency inversion uh work how how we can utilize in the flutter app yeah so depending inversion is like like providing I [Music] guess so it's like like um providing some uh suppose like let's say some classes needing some kind of dependency uh which we don't want to like make some
instance in it so we provide that dependency from outside the class we invert that dependency out of the uh class so uh it is like this okay yeah so dependency inversion we um don't depend on the concrete class right so we depend on the uh like the abstraction of that particular class so um like uh let's say you have a reproductive class um the um the dependency should not be the actual reproduc class which is a concrete class right and it should depend on the abstraction so subraction means that the uh if you have a
repository and you need to have some interface or or let's say abstract class in the flutter and the dot we basically have the abstract right so where only there you define the abstraction like Define the method to just a method you have the method a method and you don't have a method bu which is just abstract function in the uh the abstract class so even you add plug out and plug in the new new dependency there that's going to work as it is so it's not going to break anything so that's the main point of
the dependency uh inversion uh principle that we use and uh we mostly Us in the uh flutter in in in the separate layer if you have a different kind of the layer if you have let's say a different layer separated to like repository layer uh use case layer or or if we have the domain layer so we basically create the abstract class there and um that it depends on the abstraction like let's say reprod has the abstract class and then the concrete class and then your use case has the um concrete class and then it
also has the abstract class so um we pass in the uh depend on the abstraction like if you are passing as the dependency injection through Constructor you depend on the abstract class right not depend on the uh the uh concrete class okay that's cool um uh what about the um do you have any idea about the composition or the composite uh design pattern that uh flutter actually uh make use right do you have any knowledge about the composite or composition no let go uh it's basically in in the flutter like uh we have a like
the parent of the child right so relationship so you can create the uh multiple even you can if you have a small text uh you can extract it to the separate uh widget right and then you have the multiple components and then you can put into one single widget to make it a one tree so compos composition is something like that so it's like you have one tree and it has the many branches so you think can think of your widget as the U many branches it has to build one solid uh like let's say
if you want to build a one uh let's say a homepage you can have a multiple uh widget that is there and when it comes together it can you can build it uh a whole widget so in this way you can apply the composition and uh make it cleaner right so you don't put everything in the one whole uh widget but you can separate it to the different uh smaller part of the widget and apply the composition and um that's that way you can maintain a cleaner cleaner UI in in the uh flatter okay that's
cool I think it's almost uh one hour here and uh um we cover a lot of the um Concepts Concepts that's cool uh uh do you have any any question or anything that you want to ask uh yeah so like um I want to ask like uh how how I can be like more better at like it like uh also like uh do you think like I have to learn some native things also like to uh yeah so uh getting better is is um just a practice right uh um it's based on the experience how
much you put effort and how much time you uh put effort in learning the things all right then um not just by reading the blog or watching the video but actually you have to implement that to get that uh experience and uh it's not like uh you do once and uh you say that you know it right but it's a continuously uh doing the same thing once once you do the same thing repeatedly then you uh you are confident on it and you can say you know it right so you get better once you apply
it apply it again and again and again you get better and better and better on that one right uh once uh like you have to build so many app or you have to work in so many feature that once you work on one feature and once you read the documentation and once you implement it um after some time you you will obviously forget that how you have implemented and again you have to go and read re relearn it um so learning the same thing or doing the same thing repeatedly uh will make you better so
uh if you want to be uh better in the flutter you have to do do the same thing or learn the same thing repeatedly right and um you learn this and then maybe you forgot after one month or another 3 months you will completely forgot what you have done so continuously learning about it right reading about it uh it's it's going to improve you and it takes time not just in maybe one year or two year is is you can't be uh as good right so it's the continuous Improvement so you have to improve it
continuously and um Everybody anybody can ask ask anybody they can't say that they know everything inside what is inside the flutter or what what is inside the dot but uh main thing is that your Basics needs to be clear and if you have a clear basic and um then uh you can certainly improve and the rest of the features and that flutter is provided and uh for the native part I think um if you just are starting like if you just have one year I I think still not required but uh certainly if you are
going to be mid level or mid level of developer or or if you are going to be senior level then certainly the uh Native side of the uh things are are re because once you are senior or middle L um and then there is expectation that you can configure the things in the even if you don't know how to build app but you should be at least comfortable with the how how the Android works of the folder structure and uh what are the feature that it provides right in the native side uh you should be
familiar with that one even if you cannot write the cotlin or the Java code or the Swift Code but you need to be familiar like uh how how the how the things work like how you are going to set up the uh like uh manage the different kind of the flavors what is the Gradle what is the how the um code compilation work on the Android side how how the code is code compilation works with the um the iOS side and like uh if you face like um how you are going to manage the uh
release of this application managing the permission uh certificates right um um so all these things that you that uh you expect because if you are a senior then um some project may be there where you are senior and you don't have any lead that is guiding you right and at that time you will be the one to configure all of those information and at that time you um you need to have idea how these things works so basically it's from the mid level to the senior level then uh you need to uh at least have
some of the uh Native thing native things Ro uh you should be able to build some certain small apps right not a complex app but you should build a small apps um and understand how the things Works behind the SC in in all of those uh Native side so that will be uh uh helpful or or it is required actually in in the senior in the senior level now because sometime you have to work alone in the project or you have a junior and you are the senior right so the junior is going to come
come to you and uh asks the certain question right about that if if we cannot solve that issue so that is the point um for for the native side