Flutter Clean Architecture + GetX - DeliveryApp | Flutter Learning

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello people how are you welcome to another new video and how you will have seen in the title at the end by the majority of votes garex won so we are going to do the implementation of clean architecture with state management being ex of the application that we saw last time in the last video that is the delivery one is a very simple application based on themes also the aegis I'm going to quickly show you here a demo of what we did in the last video check the last video for which you did not see a splash screen, a login and there I am live mode but I can also change the mode then give the login we have the list of products here a button every time I press the button we are going to add a counter here a counter in this central button will have the amount of products that I am adding then here I can create several products and when I press this button I go to my cart which are the products that I am going to have added with the number of elements that I have I can have I can increase qui tarle and the total is updated here and when you press delete also oil and I am removing elements basically that is what we are going to do all that session states with garex and well at the end all the steps states or the code structure will be similar in several cases Using different boards we are going to see that later and I also have here the screen of the profile of the user profile that has been achieved in this case I am going to paint the image that is in it, I have the name and email local and here it allows me to change the mode Live application and will persist and this button to log out which is going to simply delete the information and will return login then basically what I intend to do is the following when I entered the application here I will upload a first one - touch in which I am going to store del using char pérez but we are going to use the plugin to be preferred if the user was blocked it will have a touch that we persist if I do not send to the login screen if you At the touch, I am going to simulate a request but we are going to do it in memory only to a service of yours that has the validation simply for you to use it and it was going to obtain user information and it will no longer go to the login screen. to go to home in the event that it does not have everything that is going to enter here at the login I will enter data when I press login it will be the validation of the user if it is correct I will put the users in hard to validate it in the data layer and if it agrees with the users who are studying then we save information about your user in hard also in char preference the token and some data of the user not image maybe name and medium not also the projections we will persist the subject the subject of the application and once it is correctly identified if it does not show an error it will redirect to the screen of this product these products I will also theoretically remove it from a web service but we will manage the memory I will leave it r ready for you to connect it, nothing else and to like it and that is and we load the data here I am selecting this already from the local state management here when I go to the cart also all the elements that would appear when you press delete ready just check out simply We show a snack bar it can be and here I also load the data that since it comes from the login that had persisted and here it also interacts with the topic that they want preference no so that we will be able to explore a bit what ex we are going to see management of states and The most important thing that we are going to implement this using clean architecture which is to write texts are in Spanish in a clean architecture are a set of concepts that help us to improve our software creation process of our application in this case it is a guide there is no something specific that tells you this must be so because if you have to follow it to the letter it is not a guide as well as the state management that guides for the blog that can s implement the way you want but it tells you more or less how you should do it in this case the clean architecture is based on separating the application into modules in layers so that everything is not mixed in this case the main ones that I can identify and that by reviewing the guerre xxvi package that also have that structure is the presentation layer which is where the ones from the domain layer are where are your keys and the repository in this case the repository and has put identity there which are the classes that interact with with everyone, let's say in the help and we also have entities and at the time of bringing the information also and good data where we can access a web service plugin or the data sort that we want, we will see later when we go to implementation because because it is said clean architecture and I think that with this intro we can pass the code to the implementation quickly well we are already on the code track so the first thing we have to do is add gar las cows here I have some cows from other examples that I have in this project first I am going to add garex I am going to copy and paste this and I am also going to add at once the chart preference that I am going to use to persist local data and this and now I'm just going to run the application again I'm going to see if you are seeing well if it is okay then before starting to enter you want xxi we are going to define the structure well I had already created the structure something similar here in architecture well but presentation domain and data I only have data and memory meadows where I was pulling the products in memory in domain that I have this can be in you that you can define the name that you want that gives you a guide as I told you the product is good name description price and more I will have I have to create good that I am a user they only have names estero name and more than I had in the design although we have in the app it has we are going to use internet my password nothing more good but the pa go no name in the image is fine that we do not need anything else here enríquez there is nothing I neither the presentation I have the splash widgets home blogging so as I told you in the splash what we are going to do is get the token if there is from local then make a request to observe to see if there is no so I am going to imagine that I already have that in first I am going to start in the layer above I am going to create a folder that can be data sors and I have seen that also some create in the interface in the cast domaining group domain we are going to do it I am going to create a repository folder repository and here I am going to create an interface that is first going to be an interface to obtain the data locally which can be I am going to get local you will be ripoll and tories thus a repository and dart interface and this class local repository interface not local repository interface and it is also already good it will be abstract because it will not have implementation of the methods here I am only going to define what things that I want to do it, I am not going to implement any method, it is simply like a contract, nothing more than the implementation, I can do it in whatever I want, I can implement it in this case, if the hype is preferred, I do not know where some other is based for the plugin case to save information local ok so here I have to have the touch 1 this is going to be a future string I feel that I am going to put a touch in what has been stored taking advantage of the get local stories also when I do the goltz I will delete the information so I am going to pronounce void clear information or that I have nothing this prepared I am doing the flight clean information clear the jerk the club in everything who what else am I going to save I am going to save the user I am also going to save user data and when I get the information ok ok yes then here the user could return it can also be 6 I am going to put it and I am going to receive the user and I need a get you to know also exterior and usher that it uses and here it does not Something happened to him no nothing happened to him [Music] nothing happened to him there is already my interface now I am going to implement it in the data layer data data source I am going to put it here loucá repository in this case it will be implementation and I will create the local class repository implementation that will extend the interface to create interface is and I will ask ask override these methods here I am doing the implementation you want in this case will use the chart preference going Let's see if this I think it's been a long time since I know how to be preferred to be preferred here I can do something directly to the instance this is a future so I'm going to do it directly this is a future so I 'm going to implement it directly here since it is a simple take the end is not distancing it every time it comes in the code then you will see that it is a simple everything I will add the zinc ok then remember what makes it preferable and nothing else and now the touch is going to get an all that here I need the safety car also gets I am going to create a kit here that will be for example with the touch touch this I am going to create another that is usher I will be myself only name I am king I could also save all the user in a jason but we are going to make it that way simpler and 20 ney name I also missed the topic in my life I am here and what else has to save and the image Pérez and more and more and more this I do not need to expose so I can put private since only bucks I'm going to access those values ​​from here so I put them private and it is ready for them to touch the rector this is a gets train and this if there is nothing it attracts me null that is already there everything is fine I missed the 6 touch touch string touch white white 3 that has gates here it has I have to use the edict I do not have to make a rector that I have 176 of life here since it was worth and here the doping and it could return everything that I do want and here I get a error because it doesn't create the implementation so I'm going to make it quick Amente here sorry I did not create the interface the method to implement it and this get you be here easy it also starts to get data it can be a here it would be a press user name it would be a final they are here a prisoner name i and more and all this application the heaviest I think that the water will handle the issues and all that because the rest of the state management is quite simple, so here I create my end user I am and I return what he asks me here I am a station and more and more and it is and I already have You can see this taking it out of projections, it is necessary to save it now here I can make a stockpile I hit be preferential server friends jet stream it can be if the step of being a username canon I do not need anything that I get an error that tells me to be about people of the kino here here It would be a brief journey, this one I am going to copy here again and again and again and this would be press name press and more share and more user name and return the loser and this I have my interface implementation that more I am already assuming that in the splash scree n return the token ok and if I return the token I would have to make a request when serving to ask them if there is a user then created another repository that may be there are repositories and class abstract class repository arrives that I have to tell it yes yes yes Go back to the epp now and tell it get you to be fronton, I'm a touch and this could return a user to me in life if it exists, otherwise it could throw an exception that is cleaner is the login also future here I would have to return the login as well a user and in the login if he would have to return not only a user but the token as well so he would have to create another object for that at this point until it is okay to groguet yusef soon kings and he passed the touch and a half the user yes but the first Once I do whatever this is going to be done when they go to the beaches and validity but if not in the login I will pass the login in step may be the request here I will take advantage of this request folder i wish pons create a respons or request or make a use request login request art and this will be a plus login request final string username final string password this and that 's better and then in the response you want what I told you that it came with everything who can be a login or response log in response and final string that would be a token since it would be a booster it may be so I need usher and the constructor is up there all right I have my response atrium and I am going to modify the impede now the interface interface and this will be a future blogging response and that's it, you're not responding, you're here, it's going to be a loser, a login request, the judge alcón give you the login I need most from the epilogue, I'm going to simulate a log out, this is going to be a I'll just go and a log. out in the just place it passed the token and what should be how to play in removing the session no more and is now going to create the implementation and I think others and would state management think so good we see the repository implementation check plas the repository implementation nothing more extensive clean repository interface was I am going to ask to implement and this get you be front now we are going to play here with hard data in theory you here should connect with http or whatever you want with fire fire store or whatever the service to the back-end and they should there identify based on everything that is not what the credentials that you send them and return the data they want but why do I do it like this because this is climate architects why because I am patron saint repository where I simply from the god who made, let's say from the controller in Castilian, I'm going to invoke a good guy, he's going to be an architect who also believes that he implements his news, which is a tractor, something so that it is the one of your present what you controller knows It is going to communicate with that intermediate class which is the I is that I am going to put and that is that it is going to connect to a with an interface for example in this case it can be local storage repository and I simply I work with this, based on this, I tell it to give media to the front or that it does not return its users to me, it does not matter if the implementation you do it by connecting with ghost service connecting tea to factor or agraft and see I do not care simply you I send these returns this is a contract and here the implementation for example I am going to do it in memory but you can do it with a package so this is interesting in so this is done is that simple but at the time of testing also because not only we have the interface we can inject a false mod to do the tests and the process is facilitated we are not mixing any widgets how you are seeing here everything is business logic connections and that so it is important to keep the layers separate the modules separate ok then we start For example, here I am going to make a myth that is forgiveness, he mentioned that it is equal to good data so false to 111 so you return me a user that I can define here it cannot be me name here I am going to say it steve jobs username steve jobs and more here I am going to return read who should come an image url no but here I am going to use one that I have here already in memory in local which would be assets delivery users and steve jobs point jpg It is that I am missing this 85 and if the touch month 222 I will return the other user students and since it is the most here and the most jp than ready, if not here I could throw an exception and I want to throw a custom exception so I have to create my exception I go here it can be I could create another bales but good to facilitate this I will create an exception folder and tell it exceptional delivery or if not auto station wagon this can be an auto exception and this would have to extend exception exception that me ask no exception with seeing them tomic simply exception implement that option let's see I'll see if it allows me to throw an exception I'm not sure where it is if it allows me to make a piece of this exception that it implements in the exception ion of dart bar cage the sky 'engine here it could even pass some message to you no but hey it's fine just with that and that 's it then the token has to be one of these two and again another disappointment is already in the login the same could be a similar variation for example when a point I am is equal to steve and blogging password is equal to jobs then the user will be steve jobs this response then here is the move here the return the object that creates response is agreed here returns the token In this case it will have to be the one above 111 and the user and the same here but now with more thread that will be I touch and I copied this user eye this implementation you can do it as you wish or against your back end and launched this section yes no and to give it a touch of realism I am going to put a delay so that it does not go so fast so that you please think a bit so I give wait delay constant duration it can be 13 seconds and this one and here too achieved here that it was going to be just good here, simply in theory I would have to remove the moving token from server touch and nothing else is all there is nothing more good up to there we have already created the data part also of the local and now we are just going to connect everything we are going to connect little by little because for now if the state management yes and do everything else no so we are going to continue with that because there are people here I was wrong it is how I am using another user in theory here I am going to put it Another thread that is using the same saying a copy-paste I am going to take advantage of adding the part of the theme here because I am not saving the theme either so here I already have a variable lend team and I am simply going to create a future void von der goltz here and I'm going to put a vulgar dark mods on it and I'm going to recover only in william gay and it's long and nothing else I just do the implementation now quickly I'm in the local local implementation I get an error it's fine and that's it it is here simply is the implementation this part is easier and it was without director and shark mauser preferential points jetblue and 3 dark is and to save it I use it to be preferential points & wood and I use the key and the valley that I am passing this nothing more now if we started with the implementation of care ex because we use gates gitex material here jr / ecs has an interesting option which are the page yet page the pages that I am going to use to navigate and they have a special option which is vending this is very cool in the convoy to remove it and I can put an initial by neither nor nor be root I will then create my class roots file well that is single roots and I will put a file that is roots of free delivery roots point art and this is my class of delivery roots I'm going to create here my routes that will be final static string expanded to be equal to splash static final string another one that I have will be the login here now I have the home what else I have route with also they are not routes because they are internal views and I think that's all splash login and home and now I'm going to create my space delivery 6 so I'm going to rename this because it's more generic a free man delivery navigation I'm going to put larry page and here I'm going to put my mis pages that are going to be yet page is already in the name for the path of splash delivery blood splash is going to be the page splash screen this I think is a vile there if it is a function this and it has nothing is and the others that are going to do and the login is going well screen ok then what else I already have my pages that I am going to do delivery page they do not believe it as static and steve payne pérez is starting ruth I am going to put delivery blood point the splash that the initial route then I am going to remove this import and get ex has a special option that is the vending has initial vending that are like the classes that allow us to inject dependencies as we have global dependencies that are the ipi and the local is now me so I'm going to create a class for inject them there I am going to create here in I am going to tell you a main binding if any main painting class that extends from bain days then yerex that allows me to make a new king of the dependencies that I am going to use rest we know try we do it with multi provider the same with the flar blog there is a blog and provider I think that the same then a special class has it separated for example I am going to inject the get we are going to import this not lazy putts where here you can dictate the dependencies that I want eye let's work based on interfaces here then is what to look for the repository interface and I am going to inject the implementation so this allows me to change any implementation I am only going to work based on the interface I do not care what implementation I have here they leave injected and for the ts it will be a lot simpler because I can inject a mount is a fake ts here for the tests then get lazy potts here there is also an interface repository and it asks for repository I laugh from here the implementation and what else is ok then so far everything is fine I have the implementations injected now just go to my good this is the initial bending invite me and this I say that this is going to be the initial one I am going to run the application because it seems that it fell into the simulator and we are going to see this one is running I imagine now if I am going to splash spring I am going to re-invoice this I no longer need this false delay I am simply going to use a style is here this I remove this Monday cri [Music] and because we are using derex we can use the widget that is get widget that where I tell it which controller I am going to use but I have no controller here so I have to create a splash controller which is the one that will understand or handle the business logic classes classic controller extreme what ex controller and that's it then I can put here this control imported and it's done now what can I do with this control I don't have a binding here this controller should have access to the repos Itorio del local so I'm going to create a repository interface block and an interface repository is created by the constructor and I put it named to be able to inject these these values and where I get those values ​​they saw that they had the vending 1000 bach inning where to inject but I don't need to create this control and as I think it is good because we can use a binding for splash screen today create a splash screen binding is not plas binding, it would be a splash bain class of extens finding this for the handling of dependency injection so here I am going to inject the call lazy put here I am going to inject the es classic controller and it finished creating and this asked me for two elements there is no law so where can I get it from the same get there is an end I think if I simply tell it fire and it will look for the instance that have that type that type of class that is what you are waiting for and if it does not find it, it will surely throw an error or it will be null then it created a crazy and the same is already and is my splash contr oller injected and now what else am I going to splash controller and this one wants to control it has methods that I can override which is a few lines when the controller has been created but still in view it has not been rendered so I am going to do it in the name di I believe there is one in grady where the view and then presented here can load some logic here might be that I am in this here could be a method validated validated that can be validation to validate the session if there is a user then here could be a method to 5 not even if here I am going to call valid station validation and first bring the final touch touch if I am going to put it like this so as not to have many callbacks and here I put way is still that if the touch is different from nul then it called law to bring the data but simply return something to view and tell it that there is nothing if there is no token then it should send the login we are going to try here I would use that this is what I do not like jets that oblige me Go to use the navigation within the control which is incorrect because and made a video about the vile context that if it can be in the channel of ferrer colombia or if they do not find it they put the comments and I put them the one I put the link but hey let's use it to see how this free pace free roots and bojan is doing, I think something I had to do here is if login delivery roots is not I have to replace it I think to replace the off or flame & pop the codename & page and they do so It is like the place no longer then a little from the splash and they call login and if the touch of a different nature then called the hipias white believe point that I am frontal that touch once I have the you be it persists so I can use an away point lokarri post it or interface point safe to share and it happened to him I am nothing more and I redirect to home in this case and that's it we are going to try this that I would miss the most and in the routes I did not root the jury navigation roots here I am missing indicate the vending this spla sh has a bending that is going to be like the class that injects internally if you start to review the code to find that it is simple it is not a gay page that is a class like this every time I do in the vision we are going to review in the vision by Example here in get off name is as a new putter place that is using the normal page let me check the let's go to the main mail I have a get pages laws that the country does, look every time there is this one has a generator that handled routes that has a get page root and I am going to enter this team it extends from asking for root and this is where it calls the vending it verifies if it has dependencies and is that the by ning is different null but it runs all the bandin and calls dependencies first first before invoke the page calls the pods which in this case my splash beijing that has just the injection from my controller knew I can use my controller here ok but hey I will not need on this page just for the for l to logic splash and controller here which I do not agree with this but let's see first if it works so delivery and hallyday station with ready and I am not going to enter the 'bund' and we are going to see why the vending does not enter this I controlled the splash band and because we are in banking it seems that the 20th does not enter, they waited for print and if Albaini is entering I think the problem is that it is not an instance of the splash control because it is not looking for it, it has simply put it there in memory as law yes so what I can do is good to bring the controller here pod is to control although I am not going to use what here to use the find and I put splash control and I suppose that with this the days to initialize it says to clean the post-it oriol or memory book to use and then he released it, we are going to test in this one as I am not successful, then he looks for the token and does not find it and simply sends login then we are in the login screen now we are in the login then we are going to go rap Then and here you would also have to create your wine ding ding ding although the standing bands simply implemented the dependency method that more so in scream the gun control is missing login control it would not be class sunday control gates ex controller here that I can do just good how am I going to need him sorry, this splash controller I need the low cost and also these 2 a port and I changed the name of the ready constructor and in my local binding the same thing I did for the splash binding only that I am going to insert the control that corresponds to this for it Dependency handling this would be a login controller and it is injecting dependencies it is dependency injection that way it makes text [Music] not cool yes then we are going to control and here I could create a void login method and nothing else I will create here the fainá user name text controller editing controller the password text control this then I will give login I do not forget the navigation of free navigation here I also need to tell them their mining is going to be either van dyck is I have a controller login here I am going to capture the data first and username I am a teeth controller text and the password I have the valid trip then [Music] log in response equals leape and from here I am going to put a wave huawei point point login and I am going to create a login request henríquez I am line password it is obviously that this as I put in the clean implementation and it can throw an exception if it does not find the user then I have to be prepared for that except here it would show a snack bar you are a message this is also anti pattern because I am using a snack bar it is showing widget within the business logic which is wrong and that is what I do not like about direct los others would have to return better we do so not such as to avoid falling into this Antipater future boom will live if proper response login then what will I do this I will remove here He returned to falls and zeal in the corrector so different that here is the irresponsible and responsive thing and to save the touch and local gdp groups and thor interface touch just put a touch and in the local web repository in 3.62 air response with usher and this and I return truth and there is [Music] a new error this buoy login page and they do not register it I put here I need the controller get widgets blogging controller I am going to create a method that is the login and I am simply going to call the control of the login point and This how you get an answer is going to be 5 and if it is struch then I make a direct navigated towards of all towards the koldo flame page in we will have yes and I put the jury page to go and to the home free of the roots and if not I show there yes I put a snack bar incorrect login, I just need to do nothing else, there are controls in the texts, here I am, here is the text that is controller is control the exam and here password and even the button will no longer call the home screen directly. i no va a ir a blogging este método es el que está arriba y listo parece que mi simulador nuevamente falla no sé qué está pasando con el otro lado voy a compilar mientras cumplir los revisamos el login controller va a entrar a este login va a traer los datos del controller los textos controller llamada ley que hay con los datos del zew ser y retorna un logro response que es un objeto login response que contiene el talking y liu share y si lanza un excepciones que no fue identificado y yo retorno en falls el widget y aquí ya puedo redirigir al home o mostrar un mensaje del snack mar hasta ahí está sencillo creo que no hay nada raro voy a comentar esto quitar esto y ya está vamos a probar con esto habíamos finalizado el audiencia que funciona ok login voy a poner cualquier cosa login 123 y un mensaje de error login incorrecto aquí podría manejar esta va a ser interesante para el cargando y aquí por ejemplo pongo el long masc y esta no son tres segundos que le puse pero no tengo ningún in dicador así que podría validar eso si voy atrás ya cerró nuestras páginas y su pop así que para cerrar esto el login le voy a poner un indicador ya que manejamos estados aquí es en el controller no estoy en el widget de aquí me parece el control voy a crear un por ejemplo voy a crear un stack a todo no sólo solo esto está acá children colon y el cierre de stack no aquí y aquí puedo poner un por ejemplo un centre el circo circular roberts indicators nada más no también podría ponerle posiciones field podría ponerle un peinar color color black 26 puede ser esto es medio transparente y si lo dejo ahí bueno en teoría acá debería entrar directamente no 1 2 3 y mandar con esta virgen está por que guarde los datos del todo quién se acuerda de guardar los datos del toque entonces está yéndose a validar con el limpia y el usuario y entonces por eso me está redirigiendo el home pero yo quiero el login quiero volver a alguien como necesito borrar los datos voy a ponerle rápidamente un evento aquí al profe el screen esto no deben hacerlo pero solamente para borrar los datos voy a cuando presiona el log out aquí voy a decirle se acuerdan donde lo puse en el local de grupos y tory no lo que grupos y tori implementation aquí no deben hacer esto pero voy a poner un clic el data y debería borrar me los datos preferentes que entonces voy aquí borro ya no hay preferente entonces cuando yo vuelva a entrar debe ir al login y ahí está en la pantalla cargando que le puse usted lo que estaba haciendo que quiero probar ok entonces este es el login aquí voy a poner una condición pero basada en el estado un controller por ejemplo voy a crear un y nam hoy esto lo lo quito y el dogging state voy a ponerlo en cloud loading en ti no start y loud y nada más inicial y loading voy a crear una variable de estado dentro del controlador que va a ser log in style lo voy a poner en state punto inicial porque me presión installation inicial baixas mitchell ops que se ha observado me voy a convertir automá ticamente un string ustedes revisan el código tienes una extensión esto de arex miren extiende a eric simplemente tiene bastante lógica aquí y este área simplemente es una clase al final que lo que hace este creado nuestra in controller por cada objeto que tú le pongas ops va a tener un string controller y cuando tú lo leas en tu widget va a escuchar va a ser va a ser un string builder internamente donde va a recibir los datos entonces esto tiene un string controller que va a ir emitiendo datos miren cada vez que tú le asignas datos emite y bueno así es cómo funciona esto internamente hay varios tipos no he visto que han creado int string eres volver cada vez que tú haces un cambio automáticamente envía una señal de que de actualizarse igual en el string cuando la asigna en los números también hay un bug no sabes qué sumas restas automáticamente envía un seriedad y envía una valores ya si conocen streams es lo mismo que tiene internamente calonge state empieza en inicia y cuándo cuando está cargando en teoría aquí este login demora de acuerdo en tres segundos así que aquí lo voy a decirlo en state no bien state loading aunque ya iba a estar cargando y si algo falla entonces aquí le voy a decir inicia la nueva también estado voy a salir y entonces que más necesito simplemente escuchar eso pero sólo para solo me interesa para este vídeo así que voy a ponerle aquí y excargos el widget que escuchan sigo vex y esto es un vil de aquí voy a ponerle llaves retorno a este widget y aquí puedo usar el if controller control el punto inicial hay sets iniciales a esta variable más states login state value es igual a blogging state loud y entonces muestro este widget sí no nuestro 16 es vox 5 probamos y está el login voy a ingresar cualquier valor 1 2 3 y está loco break y desapareció entonces posibles que viene ahora esta vez voy a usar steve jobs 1 2 3 y como ésta es correcto manda el hoy y aguardó los datos que retorna él el repositorio implementó después steve jobs entonces es tá retornando este toque y estos datos del usuario las la imagen todo y la está persistiendo vea y login controller que hace una vez que retorna los datos cuando el login es incorrecto lanzó una excepción aquí captura decepción retorno force muestra slackware cambió el estado para que el wii se actualice y aquí guardo el toque y guardo el usuario entonces ya tengo los datos del usuario que podemos tener perfil vamos a seguir con ahora la parte de él el productos de home bueno entonces ya continuamos algo que me olvide es que en el splash screen también tengo que validar el tema de la aplicación lo cual no lo estoy haciendo y splash binding splash controller sería no me gusta que esté lógica relacionada a la ayuda aquí porque él se involucra con el contexto pero no aquí vamos a ponerle un método qué va a ser con in it [Música] super un clínic y aquí va de zinc crea un método bytes válida [Música] y lo que voy a hacer es traer el tema tim igual no es dark igual a white blue car repositor y punto y estar montt esto puede ser nulo no porque la primera vez no tengo ningún valor así que es dark diferente de nulo entonces hasta que tiene un método también para manejar el tema no sin fin y le pasó el tema si es dark entonces le pasó el dark sí sí no y si no puede usar creo que quiere que también tiene también tiene una variable de taxi me dice si estoy en dartmouth así que puedo usar esto no [Música] si quiere es así que y stark mode partimos lighting ya así nada más y creo que eso es todo grabó y voy a entrar de nuevo ya entonces asumo que estoy en la misma así que está entrando aquí obviamente porque dar me gusta nulo y asumo que están en live por eso entró aquí entonces mostramos ahora la lista de productos ha faltado no hay para eso esto ustedes lo podrían separar limpia repositor ya no estoy manejando el login esto ustedes pueden ponerle por ejemplo el login repository para que manejen sólo el login y otro por ejemplo produje y play opositor y para que manejen todo lo r elacionado productos y así es tener separados por categorías por flujos en este caso sólo es autenticación yo podría crear otra para el productos pero debido a que solamente tengo estoy listado de productos y nada más así que voy a hacerlo dentro de éste hay después el nombre genérico también el viaje inauguración login o out así que vamos a hacer rápidamente future list product productos get products voy a ponerle products este producto importó y está me pide que lo implemente y ésta y acá simplemente voy a hacer un fake del nyt de lights a 5 constellation un segundo y retorno a la lista de productos que tenía como se llamaba memoria y me morí estaban dentro de mi memoria y products products nada más y lo importa y esta ya tengo limpia y ahora tengo el home que tengo que manejar en el home miren en el home necesito mostrar aquí la imagen de el usuario así que esta barra la tengo el home así que vamos home el home screen tengo el tab bercy donde le puse una bata rojo vamos a ver si fun ciona home aquí son este default porque si entonces antes de los productos vamos a manejar el home primero me olvida de esto que tenemos que manejar el estado de los de los botones y esto así que un home con controller porque aparece aquí controller las controla extenda get control está ahora necesito home banking class home banking extend findings mip implementar dependencias esta y aquí que tendría que hacer sin éxito a inyectarle el así como el splash es lo mismo existe inyectarle el controller creex esto también lo pueden no necesitan el bajen y lo pueden hacer directamente en el widget cómo se usan dos putts los detengan contra pero es mucho mejor hacerlo así más limpio un lugar sólo para dependencias home controller necesito aquí necesito no necesito esto sí para obtener el usuario así que un controller entro vaina local repositorio interface al compositor interface constructor y ésta esta joven ding me falta en las páginas no le puse el binding main ding aquí vending home findin g y esta voy a salir por si acaso combining está un controller y esto necesito que en el hombre d cargue el usuario no te dio ser voy a crear el usuario aquí yo ser yo ser igual sería no tengo ningún usuario el inicio voy a importar esto y aquí lo que tengo que hacer es traer al yo ser grandioso ser igual a componer lo privado incluso esto para que no pueda ser del otro lado a waits así que no voy a hacerlo así con curvas nada más y sería no necesito que que sea válido si necesita que sea público para que pueda acceder desde el control así que aquí sería el local opositor y punto get you ser punto aquí tengo el you sería también lo pueden hacer con agua y solamente quiero probar así hacerlo así ahora y aquí tendría que hacer un yo ser y le asigna el válido yo sé que estoy obteniendo de él preference listo solo necesitaría escuchar esta variable creo pero está nula así que no sé cómo funcionará en este caso vamos a probar los juces ya está cuando empieza entonces el home binding el home screen ahora esto es un statement así que voy a cambiar esto y se va a caer seguramente en widgets sería home controller ya está ya no dice que esté voy a comentarlo por ahora ya que la gestión de estados que estamos haciendo ahora con el xerez cge igual aquí entonces que podría ser ya empezamos con el del libro y navigation bar esto está dentro de este widget así que debería poder acceder al controller [Música] vamos a probar aquí le voy a poner sólo me interesa esta parte del avatar así que aquí podría ponerle un widget que sea apps homex seguro va a salir de aquí es un aquí nada para ponerlo así el vector aquí no voy a poder acceder al control porque no me extiende el widget pero puedo hacer o puedo ponerle get ex widget controller o también puedo hacer esto que he visto que hacen final controller igual a get punto find porque me estoy equivocando en los importes voy a importar el get no el state manager porque estos horas y post al fin y aquí le pongo él con controller y esta no p uede ser con controller y entonces aquí en teoría debería poder acceder al usuario vamos a probar un doble punto ya ser válido y va a ser nulo al inicio entonces voy a hacerlo hacia el ojo [Música] si usuario si usuario es igual a nulo entonces muestro este circulaba atar rojo sino o no sé usuario es igual a no lo voy a mostrar nada un 6 el vacío si no muestro el avatar pero aquí ya le pongo la imagen en teoría debería tener el usuario así que background y más asset y más y le pongo yo usted el punto de más que en teoría soy steve jobs no debería mostrar steve jobs en el hall de la dimayor response no sé qué está pasando el problema vuelvo a compilar la aplicación y revisamos a ver qué podría fallar como lugar es tan duro la primera vez debería entrar aquí nulo que es que va a ser casi imperceptible porque y va a traerse los datos del robot del preferentes que es muy rápido así que rápidamente se va a ver el usuario seguramente debería el usuario que tengo persistido así que como grave no se curan después el login y lo grabé en el pre france así que debería traer el usuario con los datos d limpia en el pósito steve jobs debería traer este usuario libre acabamos 1 2 3 y se caiga todo qué pasa bayly guasch old town el controller no encontró el controller [Música] no controller no encontró el control pero si le estoy poniendo en el vending debería estar de la gripe a dieron aviation bombay india [Música] estoy inyectando el controller y acá dice como traen hutsby iniciales el yerbal y busco ligón del me está diciendo que el control del estado usted no que el usuario estando voy a ponerle simplemente una interrogación y probamos si el usuario está basar nulo entonces esto también va a ser nulo va a ser restar de todo voy a tener que bajar la aplicación y coreana aunque voy avanzando para no perder tiempo lo mismo voy a hacerlo en el estado del index o que voy a crear una variable int que sea el indec selected y que esto si va a empezar en 0.2 te voy a poner llevas el er ror x int así ya tiene un tipo especial que al final es lo mismo eriksson la implementación tiene muestra un controller todos tienen este grano más en contra de por cada variable que escuches vamos que corrió la aplicación de nuevo está llegando anduve no estoy usando wenger ex dice ex [Música] muy extraño si he insertado en el home control pero qué me dice ahora satisfecha con controles inicializa dicen puede ser porque no tiene valor eso es lo único que podría hacer si es que necesito que tenga un valor pero que puedo ponerle aquí yo será así ops voy a poder crear un usuario vacío quizás yo sea factory dios el punto en ti y creo en dios que tenga un hombre vacío yo solo un vacío y más bueno todo en todo caso ok entonces aquí se esté creando un usuario vacío voy a decirle yo ser en ti ops vamos a ver si funciona y ya está pero salió un error ahí está ven en la foto del usuario ya está refrescando estamos bien pero que realmente saliendo holmes came lo que pasa es que ahora si el usuar io ya no va a ser nulo pero tengo que validar que la imagen no sea nula así probamos ahora sí sin problemas ahora falta solo el contador ya como ya lo quite le quite el estadi le quite el indec que vamos a ver cómo hacemos la validación ahora curran index ya no tengo chau aquí necesito el cubren index y esto está de más esta pantalla voy a ponerle un consenso play holder y aquí también aquí ocurren gentes necesito obtenerlo y aquí también dos lados necesito entonces qué puedo hacer fácil creo que le pongo dentro de un widget ops aquí pongo el builder aquí uso controller punto index selected punto vale ya igual aquí x controller punto index electric value y esta y aquí necesito actualizar el index en base al que estoy pasando entonces creó un método el controller punto update index selected de paso el index paso y qué tengo que hacer aquí simplemente indec selected index y eso es todo creo probamos y no funciona nada camps que ha grabado graba está ahora sí bum bum bum bum vamos a ver q ué errores [Música] jr/ecs [Música] esto sí está raro no sé qué puede ser voy a quitar esto o sea que estoy llamando simplemente para actualizar el estado así que no entiendo qué podría pasar y al entrar aquí o ex para actualizar el estado con nuevo valor y mostrarlo nada más no de una raro pero vamos cuando entro a esta pantalla no muestra nada no encuentra el error [Música] no puede agregar eventos después de cerrar y esta es una de las cosas que no me gusta de estos pacas estos errores el error basada en el string pero no entiendo qué puede ser a ver cambio profile hice lo mismo o sea funciona pero está saliendo ese error así que no entiendo qué podría hacer porque estoy actualizando el index cuando cambie el index le pasa al control el indec seleccionado y nada más algo está mal aquí [Música] controller podría hacer esto estoy seguro voy a quitarlo no es eso bueno podría ser también una falla de dirección ok entonces estamos cambiando esto sin problemas puedo ver el profile aquí es ta información está en duro así que vamos a hacer es el profile de productos primero que productos ahora vamos a la pantalla de productos hasta un ex producto es queen en productos que necesito cargar los productos y luego manejar en memoria los productos del carrito y eso lo voy a manejar en el home me parece porque tiene que sincronizarse con el carrito de aquí los productos que voy agregando así que mejor esto lo dejamos para el final voy a agregar ahorita lo el profile team el tema así que vamos con profesores rápidamente profe y voy a crear un profile binding binding hasta incluso podría sacarle sí no quiero complicar más profile controller dart y voy a copiar bastante de explosiones para no perder mucho tiempo de splash y controlar profile controller profile control necesito aquí solamente loco esto y me copia también el splash las playas bang profile vending mining y que más aquí es profile mining profile controller está ahora el tema hasta donde inyectó esto creo que aquí no pu edo porque no estoy usando páginas no no estoy haciendo navegación con dentro de get page estoy usando directamente el widget dentro del envío com entre la home screen a menos que pueda usar un que space no he probado no no puedo usar un que page porque no es un widget es una clase nada más así que en este caso es lo que no me gusta profe de scream no necesito el baile y entonces voy a inyectarle directamente voy a borrar este baile el control está bien en profa screen entonces debería hacer creo que hacen esto hacen un final controller y le pone un put y aquí asigna el profundo controller y esto es lo mismo pero no me gusta que la inyección aquí queda en el wiki si usted está en una forma de usar el vending no en la navegación sino dentro del widget dentro de otro widget lo dejan en los comentarios que solamente leí el ejemplo de jr ecs y no no estaba esa esa forma así que supongo que esto también podría funcionar entonces aquí estoy ya siendo el profe de controller [Música] que más y simplemente tendría que observar el widget crear un booster vamos a probar efe controller con ready claudio ser voight loud tu ser amado copiar del home el home screen mano contraria [Música] hasta incluso podría rehusar la dejan controlar ya que es el mismo usuario pero vamos si podría rehusar el control del azul ya voy a borrar este profe el controller destacaría solamente un get fine perdón un controller solamente un fin deja un controller sí borro esto y que más controles que escuche todo [Música] si podría usar un controller o podría usar este control del juego no podría usar del profe y también yo decido así que voy a usar del home y una vez para que vean cómo se pueden revisar controlar / página con get ex y entonces a todo le pongo ops text y retorno simplemente el widget aquí esto y está simplemente ahora tengo el usuario aquí controller punto giuseppe punto vale y en teoría podría poner la imagen aquí voy a validar si el usuario y más es diferente en un entonces muestro esto y se va a apreciar si no muestra un widget vacío entonces aquí mostraría la imagen del usuario y más aquí el nombre punto name aquí podría mostrar josh earnest yo soy rey y así nomás y aquí es donde podría saberlo del tema también del zinc así que ya que lo estoy haciendo estoy hablando del home vamos a ver si funciona si steve jobs o si estaba en nombres y lo usaron ayer steve jobs el nombre steve jobs de nuevo programas steve jobs tibios perfecto y el legado está falta implementar lo malo de hacerlo así con él usando el home control es que estoy sobrecargando la lógica bueno lo haga un modo de que ustedes no lo haga como estoy re usando esto para obtener el usuario que ya había obtenido para el botón navigation el problema es que por ejemplo ahora necesito log out entonces le añado más lógica ahí y ahí voy añadiendo voy añadiendo mucha más lógica para un controlado sólo en controlar cuando puede haber sacado un profile controla para aislar la lógica que tener un poco más limpio no s ólo lo que necesito en el profe así que bueno vamos a seguirlo aquí tengo local repositorio ahora me doy cuenta que necesito limpiar y también aquí fainá y piar opositor y interface le voy a inyectar en el vending mining compañía limpia yo tengo la inyección y aquí en lo que hacía se acuerdan limpia de punto log out con el toque y si está bien le pasa el toque final que eso lo tengo en el local la cacería local repositorio interface que toquen y le pasó el token para que lo elimine y también tengo que eliminar los datos localmente loca sí huawei wait y aquí voy a simplemente espero la llamada ahí y me dirijo no quiero hacer la redirección aquí porque usted en control ahora en el olimpia de repositorio implementation le pusieron un toque front token for server y le voy a poner todo que estoy enviando para que vean que en verdad si tengo el token que estoy enviando log out jockey rafael screen log out que va a ser esto no debo hacer yo voy a crear un método aquí log out blow out aquí boi tes log out a 5 control del punto eudald espero y una vez que aquí también podría capturar excepciones bueno el controller si el sur voy de aquí tendría que hacer ya no son fitur y aquí tendría que redirigir get punto of the name et y voy a delivery roots roots voy a login porque estoy haciendo log out así que y todo esto creo que ahí está bien asumo que está bien log out ahora me falta el tema aquí tendría que observar otra variable solo en esa parte nada más voy a crear un control en una variable que sea arex bullyng y es dar fin a dar te voy a mandar iguala y aquí necesito inicializar la no sé si estoy en dar cine sólo tengo que obtener desde él voy a ponerle fall shops y eso lo tengo que obtener al inicio con hynix load current team voight loud oscura fin lucas armesto y es larchmont y aquí uso el que le puse en fin aquí le pueda dar fin y le pasó el valor destrozo es nada más ok entonces hasta ahí tengo el tema ya puedo pintar el tema con la variable de dar team pero necesito camb iarlo también voy update team y aquí a donde le pasó pudo variable stark y lo que tengo que hacer es llamar al repositorio y hacer un update y cómo era 6 dartmouth y dark lo que ya está ahí está bien no retorna nada y lo retorno aquí si está en barco o no y cuando haga establece simplemente actualizó el tema en la ayuda stark y ésta y esto porque le estoy retornando para cambiarlo dentro del widget no quiero cambiar el tema aquí así que unas buenas prácticas que profile screen vamos profe escribo en change que le paso es el control del punto con 25 con el valor y necesito cambiar el tema no así que voy a crear un método mejor tim updated estiman 20 urban stark controller punto con testing está aquí está y esto me retorna bueno ese mismo lo estoy enviando así que puso un game change team si es dark ozz dark fin sino el life inc esta hora necesito escuchar nada más estos cambios aquí en este switch si el switch nada más porque el traste cuando una dama switch off tex aquí es empieza y us o el controller punto dark funcionará funcionará vermont y me sigue saliendo ese error de je t'aime nota si ustedes saben porque me sale ese error que no me dice en qué parte del código mío está fallando sino me dice que que está fallando directamente aquí que está agregando no puede agregar otro otro evento después que ha sido cerrado el string es lo que entiendo pero en qué parte quiero saber qué entonces está cambiando el tema voy aquí y en teoría no está persistiendo al voy a salir voy a hacer recepciones debería estar en dark yo log out what's cold onu [Música] no encontró la ssm errores en el repositorio interface no dice la inyección en el libro sería en home banking sí pero parece que ya estaba distanciado así que voy a hacer otro start que debería estar con o ninguno sí bueno quedó en dar así que está perfecto mantuvo el tema solo que no mantuvo esto y estar como debería estar chequeado o no no sé cuál es el chequeado así que voy a corregir esto rápidamente de forma que escrib e sin él active color voy a ponerle el propio tengo el del libro y delivery colors punto cuerpo esta tarde light ya está bien se entiende mejor ya no me sale el error qué raro que tenemos otro estar que más me faltaba cuando hago log out no funcionaban not found en teoría salió de la pantalla pero salió otro error del libro y navigation login screen johnny to call a propósito later interface donde en el login sin controlar 9 impide vending qué espejos herreros están saliendo yo soy no no he encontrado esto en johnny to call gates así opositores y eso es porque estaba en mi alma vending pero yo asumía que debería estar en el main binding es extraño eso porque en el main bending es donde yo estoy inyectando todos y yo asumo que esto ya no debería pedirme nuevamente porque está en el perdón estoy en otro menor está aquí en el inicial by ming es como haciéndolo tomar en cuenta así que es plants así que qué puedo hacer simplemente inicial binding me permite que permite poner varios binding así que voy a decirle al login que en scream tengo mining si tengo vainas entonces voy a usar el main bai ling aquí por si acaso necesite inyectar primero las dependencias anteriores y ahora si voy a ser un hot arrestar y probamos ok lo voy a hacer con la máscara ciudad mask y tres ahora sí con la foto de la más dartmouth está en world truck qué entonces logrado debería funcionar ahora sí um ya está datos incorrectos inc y voy a poner ahora steve jobs funcionó perfecto y bueno aquí está mal el dark modo no me está pintando y quiero ver porque es profe de scream y no profile controller profe no tenemos profe el control él trabaja un control como controller y creo que es porque le puse en el on in it cuando debería ser en red y cuando el widget ya se ha mostrado así que voy a probar eso aquí tengo que salir y entrar estoy en karting entonces debería estar más tienen likes le hice cambios ya ahora si yo estoy en dar entonces algo y steve parece que se quedó con ese valor cuando yo hice da rtmouth en larchmont log out de o borrarme todos los datos y debo cambiar el tema debo cambiar el tema al inicio al light así que ahí está ese es el profe cuando presione el log out voy a cambiar el tema azul es que no estoy validando el tema en el login sino en el spla sido validad ahí tengo otro problema qué tal si en vez de re dirigirlo al login lo mandó al splash pero voy a cambiar ahora al delivery navigation poner estos bai ling entonces miles plasman findings creo que con eso ya debería estar para poder ya de estar con lo del producto dogging mind por qué entonces splash dermot perfecto ahora sigue recesión me dice que qué me dicen si el mismo error que hace rato creo que me faltó otro estar manos de campings y el splash profile screen splash y león más que este modo light modark cierro sesión modo live ahora sí ahora siesta y ahora sí onlive y estamos listo ahora si pasamos a la parte de productos y la del carrito bueno veamos entonces primero estábamos en producto screen produ ctos que había quedado ahí son estériles son estériles si está bien es un estéril y si necesita obtener los productos ahora le estoy poniendo directamente en durar producto pero vamos a crear un producto productos controlar necesito un bending no necesito un bien porque esto es una página que está dentro de home view on screen class products controller extend terex controller get conflicto esta semana ya no que necesito el ipi hay nada más aquí final limpia repositorio interface ya está un constructor y les pongo nombrado nada más en prueba screen y entonces voy a usar aquí get control creex controller pero no lo va a encontrar porque no ha sido inicial izado no necesito inicializar lo entonces el put final controller iguala puso un ghetto punto boots voy a volver importarlo de no importar guetos pütz y le digo que es un controller no productos controller y qué va a hacer productos controlar que requiere o limpiar y usted lo hago con get punto fine para que busque la instancia ok enton ces ya tengo el producto controller ahora necesito escuchar nada más sobre esto le pongo op bewkes esto y dónde está aquí le pongo control del punto no tengo nada en contra de él así que voy a crear algo fai en donde estoy mal siempre pongo final sería tengo un ex list perfecto producto producto de poner igual sería un vacío así falta importar esta y voy a crear o bueno le digo que en el on in it cargue los productos cloud products y entonces voy a boy the road productions puedo hacerlo con code weight como quiera entonces qué hago simplemente voy a limpiar al final resulta igual la vuelta y pide al punto que productos y le digo al producto listo que está actualice con el nuevo estado [Música] en este caso como es nuestro todo así aps y le pasa el resultado supongo que a todo le envía simplemente la lista ojo que le está agregando más así que tengo que tener cuidado ahí a dar united el cual le sirve creo aquí simplemente le añade y reemplazó todo así que no sabía que se podía hacer est o así que promise le envió resultados así y está en teoría esto debería refrescar el stream que está escuchando y vamos a probar aquí le digo sí como le puse un delay creo de un segundo vamos a probar si controlar punto by1 braddock list punto es no en ti entonces muestra el grid wílder sí no centre chain circular progress indicator que está cargando le digo y entonces tengo este valor para cloud value porque me sale esto producto ser directamente no sabía y aquí el producto list en teoría debería funcionar vamos a probar se cayó todo porque no es un asunto de list producto así que supongo que tengo que especificar el tiempo aquí voy a salir y volver a entrar [Música] cargando y se cayó nos pide que sea uno de ese tipo así que como le puedo notificar a este ex list que tengo una lista de objetos así inicial izando los operator le agrega una lista de elementos está bien igual a todo el cual podría ser [Música] insert insert vemos clear y el valioso pálido esto está un poco raro entonces tendría que hacer esto válido igual a resultó sin nada más que vuelva a entrar y está bueno estaba fácil no simplemente era leer el código ya entonces aquí tengo ya los productos con el botón agregar y esto debería estar sincronizado con el carrito que voy agregando aquí está mostrando todo nada más pero bueno ya tenemos la primera parte no vamos al llosa reales que no sé de qué es y entonces ya tenemos la primera parte ahora al presionar el botón debería tengo que tener una variable primero y dejamos controller que tenga los productos que voy guardando así que voy a crear aquí en el modelo voy a crear un product art puede ser producto y voy a decirle clases product card este va a contener el producto y va a contener la cantidad y nada más no porque el sistema la cantidad de tengo el producto ya puedo ser la multiplicación y sacó el total y eso total sí creo que es es suficiente el problema es que aquí la cantidad va a mutar así que vamos a ver voy a hacerlo constante no perdón me con sta producto y quantity cantidad inicial es cero ya está entonces vamos a hacer implementación ahora del carrito ok entonces pasamos a la implementación del carrito vamos a crear un kart controller para manejarlo separado para controlar este car controle va a tener que ser usado desde el la lista de productos para agregar los elementos y desde el car screen para refrescarnos así que hacer un no va a necesitar alguna dependencia una inyección nada porque eso lo vamos guardar los objetos de memoria jr/ecs controller porque voy a salir de esto pero no tendrá ningún problema ok quiere controlar qué más necesitamos a rex que va a tener producto art y yo voy a poner card karlis igual a lo inicial hizo un vacío educar y esto va a ser observar un observador que más estoy ahora este car controle necesito inicializar lo junto con él home controlar ya que como les dije va a ser usado en dentro del home también así que se puede controlar y nada más no necesito nada más qué más algo que me hizo un poco de ruido es el producto art debido a que voy a actualizar los elementos voy a quitarle el final para que pueda modificar la cantidad y que por defecto empieza en 1 pues listo ahora ya tengo el card controller voy a crear mi método para agregar elementos al carrito de producto card me voy a pasar el producto productos voy a validar sobre los elementos que tengo si aquí ya existe y si existe el incremento en una la cantidad art producto carsí y voy a ponerles solamente voy a crear también un método cuando esté en la pantalla de cart y presione el botón menos pero sólo voy a implementar el ahorita que tiene que ser un forward recorrer podría hacer esto un poco más complejo acá sobre escribiendo el método y cuál cielo ver white el operador y collier overdrive para poder validar los objetos directamente sin tener que validar bueno no tenía idea así que voy a variar los nombres nada más para ver si existe ya por ejemplo voy a sacar una lista temporal que va a ser el producto la lista de observador que necesito actualizarla así que necesito setear le un nuevo valor por eso para que se actualice y refresque si no no veo otra forma de refrescar esta lista por ejemplo aquí tengo voy a recorrer la lista de productos [Música] en tiempo y si existe si p punto producto name es igual al producto que está ingresando simplemente al producto le aumentó la cantidad en 1 esto está fácil ahí le voy a decir que ya lo encontró entonces creo julián font fox y aquí un fondo truck y break si no lo encontró entonces implica que productos nuevos y la tengo que agregar a mi lista de productos el valor de la cantidad de iniciales 1 así que está bien solamente le agregó el producto que está ingresando y está y le asignó nada más para que refresque al karlis carolis punto válido es igual a luís pero una lista nueva para que refresque si no sigue siendo animalista no va a refrescar product art y ya está aquí ya tengo mi lista agregada lo que pienso agregarle también es en el icono en el icono central botón central la cantidad de elementos que voy a ir dando al carrito aseverando 2 aparece un contador 2 así que voy a crear una variable observador que sea int ruta ítems y la voy a inicializar en 0 que sean observados y aquí voy a sumar voy a sacar electoral ahora el total en basada en esta lista voy a hacer un y como se llama el método expand tengo un experto y tengo fault también para reducirlo voy a transformar los elementos de valor iniciar va a ser cero osea necesito obtener valores enteros necesito aquí decirle previos válido no me dice ten el elemento que está elemento quantity más el elemento previo que el inicio 0 y va a ir sumando todos los quantity entonces ya tengo el total simplemente actualizar el total hay temps con el total listo entonces necesite escuchar este tutorial light en esta da más y voy a ir a home vamos a correr la aplicación hasta ahí que debería ser solamente mostrar los productos y aquí es donde quiero agregarle un contador vamos a ponerle a esto un stack puede ser no es aquí es y saldrá y aquí podría hacer esto y creo que me sobra uno está y aquí le voy a poner un posiciones raid 0 child y otros circulaba tal pero en este caso más pequeño radios puede ser 10 color colores pink accent y side con un contador por ejemplo 0 voy a ponerlo y ustedes ven que hay un contador ahí entonces simplemente necesito observar ahí este valor este cambio del valor que puede ser con ops ex o ex y aquí necesito un viuda y listo necesito traer el valor ahora del card controller necesito escucharlo aquí ya lo puse en home bing xing findings y entonces card controller aquí y esto va a ser un kart controlar tengo acceso ya se cayó por qué me dice que estoy usando o vex este error sale cuando uso o ex y no uso el controller usando mal entonces simplemente validar aquí aquí en este texto si no en todo el avatar si es que el card controller punto toral air en bali es igual a cero entonces no muestro esto simplemente un 6 xbox swing sino si nuestro y tota l aquí punto streaming grabó y vamos agregó uno y no pasa nada porque no le estoy mandando el evento entonces aquí también necesito necesito acceso al car screen donde es aquí no entonces voy a copiar me esto este acceso al control entre el producto screen ítem producto voy a escalarlo aquí en el pro de screen principal pero no distanciar muchos controles ok car controller hasta aquí y simplemente necesito un comeback aquí con tap y aquí necesito recibir el code account creó un método aquí final voy al balcón tap y esto simplemente le invocó aquí y ésta ahora tengo el callback y ahora solamente el evocar control del punto de producto y está es fácil y vamos a probar ahí está uno dos tres cuatro cinco hasta que cuento en total no entonces ahora solamente me queda irme al carrito y acá debería mostrar sólo los elementos que agregado y refrescar el total entonces voy a es cartes screen gabart escribe imperfecto aquí si puedo usar ese es un style es ese su kart creado y es que acá tengo do s pantallas no uno cuando carrie está está vacío y otro cuando tengo datos así que aquí es buena forma de usar un ghetto get widgets voy a ponerle cal controller tienes cost y que más el shopping nuestro está bien aquí voy a decir le voy a poner un ops x también bewkes tengo un si el controller punto toral aire excesivo valió es igual a cero entonces muestro en ti ante screen picart si no muestro fulcar fácil de nuevo el otro lado timbal y bajar la aplicación y luego correr más mientras voy avanzando tengo fulcar está aquí si me interesa me interesa seguir escuchando los cambios aquí entonces voy a usar de nuevo un gateway & un kart controller y necesita escuchar a este y aquí le poner un ops bewkes y aquí en revolver y aquí como ya sé que tiene elementos voy directo a controller punto es seria parte carles punto ley ya y acá obtengo karlis punto value acá sería un producto que es un producto art siyaka sería un producto ya no sería un producto porque tengo la cantidad así que voy a pr ovocar lo cambio y ésta acá sería producto voy a cambiar el nombre para que se lea mejor productor product art entonces acá es productor punto producto y más no más fácil este le pongo producto igual aprox y está hay un error que es producto de buscar desde el nombre y ya estamos probamos y ok y carlo está vacío y no tengo nada en el contador voy a cart y está no hay productos este botón me falta agregar los dos shopping y voy a quitarle esto no tiene acción porque eso está en las crines está en producto identificar estoy pasando en shopping pero no estoy pasando nada desde el home screen si no me equivoco y un shopping y no hay nada aquí lo que tengo que hacer es decirle al control del punto index select o asignarle creo que no sé si también puede asignarle directamente voy a decirle 0 voy a ver si funciona y no funciona en shopping voy a salir y entró nuevamente para ver no no está funcionando parece que no está pasando en este evento en shopping de paso karl screen one shopping no e stoy pasando con shopping o bing shopping está así si ésta funciona ya ok no hay elementos y yo agrego uno debería mostrar en la pantalla ya no la triste ahora sí ahí está mi elemento me falta utilizar la cantidad creo que ya está creo que no y él es total entonces aquí también esté más y el menos debe cambiar los valores y el eliminar también y refrescar el de abajo que ya está escuchando el total no así que debería funcionar miren se agregó otra más dos abajo y en el carrito dos también como son diferentes voy a ir a otro cheese bacon 3 y ven que sólo hay dos aquí debería estar la cantidad nada más entonces ya estamos bien que me falta voy a modificar las cantidades aquí nada más fácil estoy pintando dos directamente cuando puedo pintar el productor punto quantity puntos 2 3 y esto era un widget texto cart punto quantity punto string listo grabó y ya está uno y el otro 2 el botón eliminar voy a hacerlo de una vez este creo que es este voy a usar y voy a que voy a pasarlo en que lo ha ga aquí y aquí este sería un delito si voy a crear callback un delito aquí le pasó h le pasó aquí también callback honremos substrato voy a poner para diferenciar del total de una resta sus track mejor un incremento un decremento y como esta tengo tres curvas voy a pasarle a este producto final white on the way back incrementa by night cold back the comments y esto simplemente creo aquí parámetros en constructor despuntó un decremento un incremento y está viendo error arriba por los con decrementos y no le puse con el incremento me falta aquí un decremento a un incremento donde comments todo estamos aquí para dos puntos ya es el sueño y esta línea tengo cuando borra cuando incremento cuando incrementa entonces aquí simplemente necesito [Música] controller voy a obtenerlo así fin a controlar igual a 7 puntos me quedo con el importe steinman es no haber faith getz find y aquí uso el canal controlar a ellas tengo el control esté usando un tuit get wild así que no necesito esto tengo el co ntrol simplemente control el punto del producto y le pasó el producto aquí estos métodos ya lo tenía implementado y ese producto este es un producto a cambiar de nombre y aquí controle el punto debemos provocar y esta falta crear este método nada más a implementar el remo fia déniz este va a borrarlo éste sólo va aps voy a cambiar le cambió el nombre incrementa dictamen más entendible ahora sí probé screen seguramente error incremente scream incremente si comments está y comentó que ahora el incremento lo mismo que dice en el incremento vamos a en copiar nuestra lógica carlsbad sounds si lo encuentro resto tengo que tener cuidado ahí porque si la resta no está bien solo puede llegar hasta hasta 1 hasta 1 así y entonces tengo que validar si punto quantity es mayor que 1 entonces mayor que 2 tendría que ser mayor que 1 sería 2 entonces ahí sí pudo restar pero si es 1 ya no puedo estar iguala sería igual a menos -1 y acá no tengo que agregar nada simplemente restar la cantidad eso no me i mporta y simplemente refresco la lista lo que sí necesita es este método para volver a recalcular el total el total de elementos y el total también necesito el total en costo así que voy a crear otro método aquí que sea void calcule lecturas y voy a pasar esto ahí le pasó a la lista de productos tiempo y esta boya invocarlo nada más desde el método incremento le digo y es el de carmen también y ésta deberá recalcular y cuando elimine el producto simplemente que tengo que hacer fácil algo que estoy viendo es que si estoy restando es porque el producto ya existe entonces sé qué producto es lo que puedo hacer ahí simplemente es esto está más fácil ah no pero necesito encontrar el producto de todos donde las nuevas también ya me puse a pensar es que desde aquí yo tengo el producto no necesariamente el producto así que es más fácil aquí sé que estoy añadiéndole un elemento más el cual está aumentando no no tengo que buscar si aquí existe así que vamos a cambiar esos métodos aquí vamos a vol ver al at esto suele pasar es que lo estoy haciendo así la abuela no lo tenía planificado nada y aquí voy a crear otro incrementos que sea productor de producto y este también va a recibir un productor el de clement y lo único que voy a hacer al producto sí creo que como tengo mi lista que es carvalho a este producto voy a quitarle la cantidad 1 estoy utilizando el objeto y así que necesito simplemente refrescar el mismo objeto puede ser así tengo que asignarle un list from para que crea una nueva lista y re actualice así que por eso que lo hago yo acá el vídeo calcula el total y acá el incremento sería igual pero con más y product art sería un más aquí y listo incremente más calculadoras está bien del producto va a ser simplemente agarro mi lista honremos por entonces y tengo un método aquí remoto así tengo reeducar directamente y vuelvo a calcular el total si tengo un método para para quitarla directamente y supongo que esto notifica hace un jet sí y creo que ya está probamos primero tengo que probar el incremento y funciona haciendo esto así que vamos a ponerle las acciones a este método del cars green esto es incremente a no producto sino producto está y vamos a darle acciones entonces aquí en el botón este es el problema entonces aquí tendrá que invocar al de listo yo no está en el contador dónde está su primer producto necesito el menos del más donde está voy a buscarlo por ahí con su rebufo que estás no hay causa está aquí está enap este es el counter y estaremos entonces este de 0 decremento this comments y estoy a hacer el un incremento y el dónde está el de el tacho en esta tacha aquí está kraft estoy hacer icons punto del esto es y aquí le pongo un delito listo probamos y más ha funcionado 3 - ja se fue no hice la validación y yo no tengo productos no está mal esto es la validación pues claro estoy restando nada más aquí si mi producto carl punto quantity voy a salir es mayor que 1 entonces sí puedo restarlo para que llegue a 1 sino una buena y está dentr o estamos no hay nada voy a cambiar a dark y agregó uno está voy a aumentar aumento miren el contador de abajo como aumenta también está escuchando bajo bajo bajo el contador también refresca ya no puedo dejar más que en uno perfecto de lo que quería si presionó el remo debería quitar lo perfecto y voy a agregar de nuevo voy aquí voy a agregar 5 si hago un remojo debería quitar todo está perfecto contador se refrescó también abajo listo entonces que me falta al total no refrescar el total pam pam tengo varios elementos aquí y cómo calcular total fácil bueno ya que tengo este cálculo y todos tengo uno para el total de elementos y necesito otro para en total price voy a ponerle que sea un doble este va a ser un rico sabor 0.0 y que más aquí tengo que calcular y tórax un folk también si uno va a ser pero de davos aquí va a ser final todas las pruebas es igual a en punto fault va a iniciar el 0.02 y es elemento punto quantity por elemento price por producto price además el previos vaya lis to y le digo ahora price es igual total que ponerle aquí para diferencia el nombre esta simplemente necesito escuchar ahora este esto broadprize donde en el cart screen veamos el shopping delivery aquí está solo este nada más este widget ibex ciudad y aquí pongo en controlar controle el punto en contraste tengo acceso al controller no estoy en full cars y si tengo entonces debería ser un toda rice punto vale punto no me está yendo caso voy a sacar esta variable y llamar aquí al final tour al igual controlar punto toral price punto palio y le voy a pasar a tu string pixel con dos decimales y ésta no me sale no es usado creo que hay otra variable toda la de aquí me estoy ignorando allá me estaba ignorando por esto ya está 00 está mal vamos a agregar un elemento para ver si recalcular ahí está ahora sirve cálculo 20 + 58 voy a eliminar esto para que la suma sea más corta 20 78 98 perfecto aumento uno más sería 118 está bien y creo que hemos finalizado ya es tarde también tengo el carrito voy a si no si está bien está grabando a la que asistirán ok entonces voy a la pantalla de envío para que podamos ver el resultado final que entonces y costó trabajo sí porque son varias cositas no conocía qué ex tienen buenas cosas sin embargo hay errores que son difíciles de identificar porque está muy está recontra basada en arrestar en streams soviets y es un poco difícil a veces encontrar un error el tema del navigator navigation no me gusta que quiere que se pueda usar se puede navegar desde el control o mostrar la uar del controller imagínense mostrando la capa de datos vieron cuando nuestro repositor y la implementación y ustedes van a pensar que no hay problema pero internamente pondrán su presión y tarjas luego se va a caer todo así que tienen que tener cuidado ahí porque quiere que esa libertad de esa facilidad que ustedes cuando recién empieza simplemente le usan y les parece fácil sencillo dicen o qué maravilla pero cuando hagan pruebas militares cuando van proyectos más c omplejos profesionales adicional cuenta que hay un problema está bien como de práctica recomiendo derex para gente que ya conoce un poco más de declarar the state management cómo funciona por dentro para que puedan identificar errores y hacer darle un buen uso no porque si no se imaginen y al final con cualquier este imán en ustedes puede lograr cualquier solución esto final se puede hacer comprobar el confiar el blog como uex con lo que sea es libre elección ustedes pueden usar el pacas que más les gusten o simplemente les doy de observación hay que tengan cuidado con el ex y recién empieza porque pueden cometer muchos errores entonces empezamos un poco a ver a hacer un repaso de esto déjenme reducir un poco el tamaño y ahí está ahí estamos entonces empezamos aquí empieza con el splash empieza a cargar hacer un facebook quest de tres segundos tengo un toque entonces ya tengo un usuario válido me regresión al home me carga los productos usando una ip y también fake de productos tengo a quí mi usuario muestra una información el just your name el nombre la foto puedo cambiar de destino todo funciona perfecto aquí no simplemente está pantalla no tengo productos web shop y me va acá voy a dar modo todo cambia perfecto agrega un producto aquí a ti se agregó un contador aquí estoy escuchando sólo esa parte voy aquí al carrito y puedo agregar aquí productos quitar productos el contador se va aumentando el total miren este 20 sólo es el precio del producto y qué más tengo el botón de lit para borrar elementos ya limpie mi carrito y voy a agregar otro otro otro otro cuatro elementos aquí 98 bien la suma bueno quieren sumar ahí no puedo quitar más elementos y puedo agregar los que yo quiera puede eliminar productos del carrito y listo todo usando gestión de estados cuando quería que usando print arquitecto ustedes vieron cómo se pare las capas es más fácil de testear así puedo hacer la implementación como yo quiera en este caso simplemente es en memoria pero ustedes pueden lla mar a su hija y estoy usando ser preferente también y ustedes pueden usar otra el plugin para guardar información hay pero bueno es información súper básicas y que será preferente perfecto para eso cuando no maneja mucha información y bueno eso fue todo creo estoy aquí voy a hacer los out y tengo el login si yo pongo cualquier dato no está validando solo idiomas y steve jobs así que el error está el snack bar de get y eso no estaba personalizado ojo a uno de los problemas de gerets que yo comento es que cree que tiene muchas cosas dependen mucho de muchos widgets de flager no es como un este es más que normal que depende de clases sólo de the state management the chain notifier streams no si no queréis depende de widgets también y ahí hay un problema si hay un breaking changing de algún widget grace no va a compilar porque quiere extraer widgets integrados no el snack bar hediger ex es personalizado nuevo se leen de verdad que ya provee flyer porque elena porque pruebe flores depende d el ska food y queréis no lo hace dependiente del ska full por eso lo puedes usar de cualquier lado igualmente con los no sé si muestra un botón si no estoy seguro pero depende de widget así que hay que tener cuidado ahí me hubiese gustado que mejor los separen que sean pacas de get state management yet navigator yet widgets sería chévere y solamente usan lo que necesitas y bueno veamos a ver voy a lograr me con steve jobs ahora tres segundos carga aquí un segundo muestro el listado muestro el carrito no hay voy a mi profe aquí y listo ahora voy a salir de la aplicación me toquen está grabado no es cerrado sesión si yo vuelvo a entrar no me manda el login si no me manda al home válida internamente y me manejo y bueno ese es el resultado espero que les haya gustado esta semana estaba full trabajos estoy a full voy a ver si me de tiempo para hacer más chalés estos días que viene y dejan sus comentarios que les pareció estuvo fácil difícil que les parece que eres el gestor de estaban a gus to ustedes y los leo muchas gracias y no se olviden de compartir el contenido y darle like y nos vemos en el siguiente vídeo
Info
Channel: diegoveloper
Views: 22,369
Rating: undefined out of 5
Keywords: flutter, mobile, android, ios, gde, google developer expert, flutter widgets, flutter challenges, animations, flutter animations
Id: Qffojk-vjKY
Channel Id: undefined
Length: 135min 21sec (8121 seconds)
Published: Sat Sep 19 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.