Darting into the Basics: A Crash Course on Dart Programming Language

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
foreign just minor setup settings and at nine o'clock it starts on point I promise that don't pretend you're not [Music] just leaves [Music] so right with me if it's all right with you then I could be whatever it is [Music] [Music] foreign [Music] [Music] [Music] that you need me [Music] [Music] [Music] foreign [Music] thank you foreign [Music] thank you foreign [Music] [Music] foreign foreign [Music] foreign foreign foreign I can see every Skies imagination over time save me to go find yourself [Music] [Music] laughs [Music] [Music] please when she said [Music] [Music] [Music] [Music] thank you [Music] [Music] baby [Music] you just make me feel completely [Music] [Music] [Music] baby [Music] just me [Music] will be pregnant [Music] [Music] foreign [Music] music getting that stuff done so you can hear me hopefully well set up everything like the sound and everything good good good some last stretching before I get everyone sees me and things are starting to get hot foreign foreign live streams in the long time so getting a little bit nervous bear with me and one minute hello I think we can switch slowly into the live stream mode hello everyone and welcome back to another episode of flutter explained here on the channel everything about Dart and flatter related it's great to see you since a long time my first live stream I'm currently very active Again on YouTube and I'm loving it so very great to see you hey manganesh great to have you review account zero seven I hope I will not disappoint you with Widget things because today today will be a live stream about Dart not necessarily about flutter why Dart well we should know the foundations we should know how Dart is working and I would like to first set a ground basic knowledge this is a prepared live stream that means I made one testing run where I tried to explain everything and run everything out there are still a lot of things that could go wrong but I would like to show you one thing so here that's already the part but we can see here this is what I've planned with you yes there are some numbers with timings don't take them too seriously but just that you have a rough idea what we want to achieve today first of all I will give you an introduction to the topic what we want to talk about that is the art in general I will welcome you to this great live stream then we want to see why we want to learn Dart oh you can't see that sorry I have to transition of course so many buttons so but again I have created a checklist that we want to follow more or less in Stripes so don't take the numbers with timings too seriously I marked up thank you yeah so welcome to our live stream you will get like a little bit of delay but I found out that YouTube has this short delay but with that here the quality of the stream is a bit better so I really hope that helps you to see better the things that I'm sharing okay but then we have uh applications that are what we have created already we will have a getting started like how we installed art what is important to know about it and things like that then we come to basic information here it's more about how do we start with coding seeing a little bit the dart syntax so we go through a lot of different links here we will discuss what DART looks like and how you can implement it in your application we comment in Dart we write variables and data types primitive data types mostly at the beginning then we will discuss constants versus final variables we will write our first start project which will be probably a hello world project and we will understand the main function and from this starting project we want to solve today a project where we write a quiz app inside of our terminal at the end so if everything works well and we created everything fine in the next let's say two or three hours then at the end there should be a final yeah quiz application that we can test and run so how will that look like I can quickly show you my as I said I'm prepared today so let's see if I find that quickly nope not here so let's open the projects Dart and here I've uh I think it is this one let's open that and here I created already a solution for us so if I open the terminal oh there is already a lot so let's go to projects CD Dart let's see um what was it live stream project and if I execute Dart don't worry we will talk about all of that later but just that you see what we want to create today so every one of you should have at the end of the live stream this nice little question what is the capital of France you enter for example Berlin which is incorrect you get the answer and after that you come to the next point where we ask which programming language is used for flutter which will be Dart that's correct and at the end you get the final score you will be able to update that as you wish with more answer possibilities with more questions and things like that so it is extensible so if you would like to work on that further it is possible um what's next to say in the video description down below you find all relevant links and resources that I use around this live stream that means here you can see we have you will use Visual Studio code today we will have a whiteboard in case I will draw something I will do it there and we'll save it I have never used it before but let's see maybe we can use it then we have the stack Overflow surveys I will discuss that in a second during the introduction and I added here all three years that I found like 2020 21 and 22. the reason for that is I would like to show you the increase of numbers of dark developers and why it is important for us then we have the state of developer ecosystem of 22. we can also check if I find a 21 version reason here is it contains a part where mobile Frameworks are discussed especially cross mobile Frameworks and you can see how react native got overtaken by flutter which I think is very valuable to understand then we have Dart and dart code labs and flutter itself as a website the codelabs are important or interesting because here you can learn more about Dart in general and at the end just the Discord link okay so much to the intro I put that checklist for me here down so that I will not miss so much from it hopefully and if I do please feel free to point it out but I will try to really cover all of these points step by step okay I think that's it for the welcome of that part and uh let's go into why do you should learn Dart well first of all dart is a very versatile language that you can use in nearly all different applications which makes it very cool to use and that allows you to put that in different applications you can use it on Mac OS you can use it on iOS on Android it can be used on Linux and all of these different parts and that makes it pretty strong as a language to use very quickly in all the different parts yeah let me check exactly versatility then we have flutter integration of course flutter is one of the newest mobile no it's cross-platform application Frameworks like it creates apps in Windows Mac OS Android iOS Linux hopefully whenever fuchia is ever released then it will also work there and of course in the web so it is a framework that is at the moment pretty much hyped and it works really well you can create very good apps with it some examples are for example the media app note the media marked app which is one of the biggest retailers in Europe you can see the BMW app is written with flutter you can see eBay so there is a lot of different banks for example new bank is inside of it so there is a lot of big foundations and companies that are using flutter already in their day-to-day work and it's getting more and more that's pretty cool additionally it has a very easy learning curve so if you are coming from any other programming languages Dart gives you a very nice let's say Kickstart to jump into Dart so if I for example go to the language tour if you are coming from JavaScript or c-sharp or any other programming language you will understand very easily how Dart is working and that gives you a good Head Start and does not break you or make you slower here so it is beginner friendly because it's very let's say readable and that makes it beneficial and it has strong typing and null safety what does that mean well if you enter something that is not allowed for example something is the state of null then it will throw you an error during the during the time where you compile it that means if I for example go into this file and I say something string T equals null then it will be red because it's not allowed this string says here needs to be a value inside at all times that doesn't sound too much but if you are coming from other languages like JavaScript for example which can be undefined null and so on you have to make a lot of checks you have to be always very restrictive and the language if it doesn't support it out of the box will it make you or will allow you to create a lot of errors the inventor of the value null all so called his own invention as one of the biggest mistakes in programming so that means you should avoid it and dart allow gives you the tools to directly see these issues and resolve them yeah then we have performance thanks to Dart it has two options to yeah build its things that's number one is um so-called jit just in time compilation let's see if I find quickly something about it here mm-hmm let's go to Dart let's search for jit art compile dot overview let's take it here I think here we have it with Chit so you can um make a build time just in time that means we are able to take new dark code and inject it in the old code that allows for example the hot restart and hot reload inside of flutter because with just in time you only update these parts of the application that you need while you have the ahead of time compilation it allows you to create production ready code and it produces one outcome of your creation of code that means whenever you have code like Dart for example is a really programming language that means it needs to get converted into something that your computer understands so this conversion goes through a compiler usually so your code that you have created goes into the compiler and at the end there is an output out of it so and this output can be understood from computers that's different to JavaScript right JavaScript is usually running only on your computer and will not getting compiled there are options to do that but that's just one thing to keep in mind so that means with this jit and ahead of time compilation you can get a little bit of a performance boost because especially with ahead of time if you compile everything at the beginning well you don't have to care about it when you are um yeah having to find a product but if you are using jit you can check all the time new code inside it's a little bit slower but it gives the benefit that you can update everything on the runtime okay don't want to go too much there but it allows you to have rapid development Cycles without reload at the end in flutter then we have concurrency dark uses isolates what is an isolate let me quickly Google it isolate to give you a better overview um it allows the asicronous functions to run in a whole different Dart VM VM is a virtual machine so your code Dart is running more or less in a separate container and inside of there all the operations are running and whenever you want now to let's say you have something very heavy that you would to calculate you think I don't need that necessarily now inside of this big application so I pulled it out into my own VM I create a whole new VM out of it and now inside of this code I just wait for that for example or let that run and whenever it has an answer it should inject it back into the code this is called an isolate so you create two whole separate things there um inside of the dart VM which is pretty great because that allows the communication between the two and allows you to have a very big com um yeah performance boost and the utilization of multi-core processes for example doesn't come into shared memories or locks or anything like that and you as a developer are like a user of this language don't have to care about it you are just happy that everything works at the end so that makes it very cool to use at the end and again very beginner friendly and it reduces also the possibilities of errors that we can do good then we have ecosystem if you know there is this website called pub.dev and I did not add that actually to our um to our list of different resources so I would quickly do that and let me quickly check relevant links I think that is very relevant so pub.dev that's the start and flutter package manager and here you can find all different packages that flutter and dart can inject for them so for example if I search for something command line then I will probably get a lot of different possibilities and if I search for color for example then you can you see colorful CMD for example you can see how many likes it has how many Pub points this is an internal calculation of how relevant this package is and the popularity so how many people have read that also you can see for example prompts which are rich simple synchronous command line prompt Library so you can ask and write things inside of here and have the benefit to for example here in this little GIF you can see that it will create this nice little prompt for us so enter your name you can enter something and enter the line breaks so you could use this package now and here's explained how you can install it you can see what has changed in the last couple of changes and an example so you can recreate that for you and you can see the scores where they come from so you can see follow Dart file conventions provide documentation platform support and money many more things so pub.dev is the ecosystem that is ever growing and there are a lot of packages that not only focus on Dart or flutter but they have like intermediate changes and with this big ecosystem which is ever growing because we have more and more users in flat hand art you can see there is a big thing that makes sense to learn it then we have the Google baking if you know Dart is and flutter is um baked by Google so they support it which can be a good thing can be also a downside but the biggest part is it's a good thing because it's supported that means the open source development the strong development on it is always directly in connection with Google and it helps if there is money in a project it helps that it stays relevant in the space it helps to get views it helps to be active so a big Baker is always relevant so for example in react native it is Facebook and yeah everyone has to decide which one you want to focus right so for example typescript is Microsoft and so on and so forth okay so um why did I say it could be a bad thing because Google has abandoned a lot of big projects in the beginning or or already in the last couple of years but I'm 100 sure that directed flood is not part of it because they invested already a lot in it and they invest every year more in it and they support the community a lot in that direction so dark and flutter is really really good and it allows you to make sure that you're learning something relevant for the industry good then I said already Dart has the ability to be cross-platform and that's something that is very cool because if you have some code you can share that with these compile commands for all the different uh parts so you can put it in JavaScript you could bake that as a back-end code you can do a lot of things with that and allow it to put it for example as a web assembly you can put it as native code for Linux or Windows and things like that so that allows you to have very yeah cross-platform alternative here and that's why also it is so cool for a flutter to use because it has this very big powerful possibility to be cross-platform I hope my chat is not Frozen no it doesn't look like that perfect just want to have a look not that I am talking all the time good and the last part is a career opportunities more and more companies see now the relevancy of Dart and flutter and so I am pretty sure that Dart and flutter in the long run will be more and more relevant for employees and hiring and we will go to the stack Overflow in a second and there I will talk about that a little bit more in detail good first section done are you have do you have any questions so far so checklist let's say ah let's keep that open because we want to go to the other parts so let's see I don't get any updates let me quickly check if I do I have that's down here haha nope here we go no no questions okay gotcha good then let's jump quickly into this stack Overflow Parts because that is a very interesting part for why you should start with flutter if we search for Dart in 2020 we can see it was from all respondents one of the languages that has been around four percent irrelevancy so that means four percent of all respondents said that Dart could be relevant for their work which is in 2020 not so much not the best result I would say especially if you compare it to JavaScript which is like 76 percent which is quite high but what we can see if we switch now to 2021 and search for Dart let me quickly check this is relevant uh no this one in 2021 it has been already six percent that is of course because of the amount of people who learned now flutter they understood now what is the benefit of the art and I have seen how easy it is to implement and to work with so more and more people did like Dart as a as a language and this is an increase of two percent which is massive in programming you know especially for one year in the year 22 we can see it already increased again about 0.5 percent unfortunately there is no um I don't know if they stack overflow survey 23 just checking if I no that's the last one that I could found good so that's being said we see that its start is still increasing while for example JavaScript is decreasing and all the other languages slowly also decrease so that means Dart has a future and people think that this will be something that they want to learn another cool thing is if we look for Dart I think it was here that is the salary we will come to that later because that's also part of the opportunities this is just a nice little graph so okay was it not here I thought there was one yeah most loved programming languages was searched in 2020 and as you can see Dart was one of the most loved languages besides of rust of course rust is amazing and we have typescript python koplin go and dart is not so far away from it so you can see it has a very interesting part of it so dread of course you can see it's harsh but as you can see also Dart is not necessarily wanted in this case so this brings us to the next part for career opportunities at the moment you can see from the payment level this is this one so this is the uh paying Technologies you can see that Pearl earns you a lot of money and as you can see Dart is quite low compared to all the other languages and this is one thing I learned too now in this last couple of months um so much Dart is a great language to work with you don't get paid that well at the moment that's just the truth I don't want to sugarcoat it the sad thing is I think companies and also um let's say recruiters don't know Dart and they just hear that people love it and with this combination and because more and more people want to learn and work with the art you can see that they push the prices low quite well and because I think it's not so complicated to work in Dart and to switch to Dart a lot of developers are here and with that the pricing are increasing decreasing but there are also good news if we're checking now 2021 no oh start not here not here here so you can see the media income for this is top paying Technologies again also in 22. one was it pretty low now let's see the newest version and here you can see there has been a massive increase like 10 000 Euro about one year and the reason for that is because not only there are more languages like Airline which earn you way more but you can see that slowly Dart is getting traction about also the employees and more and more people want to develop things with it so you can see there is also an increase in payments and also more and more senior developers are increasing in flutter and dart inflation is of course also a part of it uh I'm not an economics expert but you can see all the languages are getting higher but you can see the difference between PHP and dart has decreased a little bit so you can see here 6000 there is it only two thousand oh then it's not even that good maybe it's even not that good what I'm telling here but yeah Dart is unfortunately one of the less paying jobs yet I'm pretty sure the more people getting into Dart and the more senior people getting into Dart the more this median will also increase and you should not forget that this is also still just a survey so it's just statistics which always have some differentiations here so it can be still different okay but as I said I don't sugarcoat anything I just say I love Dart and I will use it further but if you want to search for a high paying job according to stack Overflow I would highly recommend you go to closure or Airline F-sharp so I think these are the tools that are earning you at the moment at least a lot of money good then we have this state of developer ecosystem for jetbrains and here if we search for flutter um foreign here in Dart we can see for example the age level so who is developing Dart mostly and as you can see a lot of young people um in the age between 29 20 21 and 29 and 30 and 39 is developed developing in Dart and this is also one part if you see for example do we have closure here inside that would be amazing now or F sharp or something F sharp for example there you can see it is way more broad also with um I want to say older people compared to here you know we have not that very high amount of people inside of here so we have a way more seniority level and that is also increasing the payment in the media at the end but I just found that very interesting that especially young people are very interested in Dart and flutter so that is usually a good sign because also young people are getting more and more senior and then we have a very strong programming language here that tells me also that it's future ready you know um young people joining into flutter and dart they're getting senior and Senior and with that we have a more versatile ecosystem in the long run and that's it what we are looking for okay so so much to that I hope that gave you a short intro let's see where we are here Chuck checklist Wilder and art yeah gotcha so applications with dart whenever you search something with flutter you can search you will find a lot of different applications here things that have been created already apps that have been using flutter a lot if you know um for example where is that I think code pen flutter Twitter you can see hopefully I find that quickly yeah Mariano's sorila sorry if I pronounce it badly has created this amazing code pen where he has copied I think this is the Twitter copy hopefully it's not broken yet why don't I see it um let me quickly check if I find it hold up okay that's not that nice now flutter pen not now okay I'm not that good prepared I really hope I can just search for it and it will work now I'm um what do we have else code pen Twitter flutter maybe I find something quickly [Music] okay flutter.dev games I think was one and flutter.dev so if you have never heard about these tools flutter has created uh like a different challenges over the years and one of them was the flutter Clock Challenge if you have never seen that this is a flutter application that they created the particle clock and the best thing is if you are checking it out it's completely open source so you can see how this particle clock has been created you can see all the different parts and it's getting very interesting here because how it is created is nuts it's with the particle with the yeah with particles engine with a painter and all of that is painted more or less hand drawn with a custom painter on top of flutter canvas so you can see how versatile at the end this clock is and if you check out flutter has created also this visual Beauty code quality I think I should also add these links into our relevancy and so let me quickly check flutter examples check clock then we have the games part and also here you can also check out some games that has been created with flutter so far that you can find here like for example the Google I O pinball which is a great example of what flutter can already achieve in the web and you can really create and play here wow that's loud can I mute that top thank you so you can choose your avatar you can see all the things that happens in the background you see there is like all the different things you can activate this pinball I don't know ah yeah so you can play the game actually and this is all done with the flame game engine in the background and I think very good company made a lot of development work here and yeah it's just crazy how good and um good this game is at the moment can we 3D games has not the best option I think if you want to go into the 3D development at the moment you would probably take a Unity or anything like that because if you check there are containers for flutter so you can just copy you have a flutter widget and put in your unity game inside of it and I think I don't even know if there is also an unreal possibility no probably not um if you want to play um there are now more and more because of the newest engine of flutter called um what is the flutter new engine what's the name new rendering engine what's the name [Music] what is the name I forgot the name anyway but flutter gets a new rendering engine and 3D gets a lot of more possibilities there and I think if you join the flutter Community um it is um yeah at the community around flutter you will see there that um there is a work group that currently tries to figure out what they can do with 3D and you will find for example more and more shaders working with flutter so flutter Shader example I think wolfen rain did create there something I think this guy yep uh yeah you have to go to I hoped that there will be an image or anything like that is there [Music] okay anyway I don't want to go too deep into these things but you can check that out it's pretty crazy uh you crash it with multi balls yeah I think there are still some bugs impeller is the name thank you majan great yeah so you can create there a lot of things and impeller will allow you more and more 3D objects as I said Wolverine used it to create more and more shaders if you don't know what a Shader is it's a small application that runs on your graphic card and that's why the execution is way faster so yeah just to have an overview there these are tools that have been created with dart and flutter and it's pretty great another thing is server pod for example a tool that I really love at the moment it's like a full stack application for flutter and dart that means you have the back end completely written in in Dart you have the front end completely written in flutter and it gives you everything at scale that means it uses so many cool features and stuff and uh like for example um of why I'm so bad with naming today uh terraform for example terraform and Docker and things like that to set up your complete full stack application and that makes it very interesting um and I want to Deep dive into it and I started already a little bit but this is also a tool that gets you started if you want to run something on Docker if you want to create a microservice strategy first thing then serverpot could be something interesting for you because it gives you all the clean feedback it has a lot of scalability and I'm really curious how this journey will go in the long run great I hope that gave you an overview about things that you can do with dart and flutter I'm currently using Dart personally mostly for CLI tools like small chat command things like I showed you at the beginning with the quiz so that you have an easy possibility to run something and I could compile that and at the end I could share that with something so I could say compile the solution for main.dart and I think I have to say that it should be an excerpt uh a dark compile Excel so it compiles and it generates me an exophile unfortunately I'm at the moment on a Mac but if I would be on a Windows PC I would now be able to execute this excile and could start the program that I created there and that's pretty awesome this is flutter live stream solution yeah so here inside we have now this Excel file and that's pretty cool because with that you can really Implement something that you can share with your friends and family and share it on their computer cool all right so I told you about the relevant links I think I can paste it already once more inside of the chat just to make sure so here we go so if you want to check out the relevant links you'll find everything down there so next step is we want to code something right we want to work on all these things so what we would like to install is Visual Studio code I think I have created a link here we go so you can download visual studio code it's in so-called or it's a an editor actually quite basic like for example notepad or something it just allows you to have the files better organized and you can see here on the left side you have all the files you have different application we don't use everything today but just that you are knowing you can enter here code on the right side so for example void Main so something like that and it will organize the code for you it will highlight the different words like void is now bluish main is yellowish and then you have this brackets things it has the availability of extensions where you can install different things to it that makes it more interesting everything like Dart flutter and today we need the dart extension so if you go to this extension section and you search for Dart then you usually have this install button up here and you should click that so that we have Dart the possibility here another thing that we will use is Dart itself so what that means is if you join here to Dart going down here you will have to install flutter or Dart one of the two if you check out get Dart SDK it will tell you how you only get Dart like for example Mac OS you can just Brew it but if you want to say you want to anyway develop and play with flutter I would highly recommend to follow the installation guide of flutter because flutter at the end if you have installed it um inside of I think tools yep you have flutter and inside of here if I change to the list I hope that's visible for everyone you can find the bin folder and here you can see there is the dart executable with part of it so you see inside of here you have the dart SDK installed that means when you install flutter Dart is coming delivered with it if you install the art per se it's also possible but is not the recommended path in my opinion so I think I have created already quite some videos for installing of Dart and flutter and if you have questions there please let me know I will not go through these steps now but you can just go here getting started you need some because I'm now on a silicon Mac that means I have an M2 that means I have to follow different paths then you have two options you can download it just like per se um like a normal application and put it somewhere it's not my preferred path even though that flutter is recommending that at the moment I would really go with the straight GitHub installation the reason is you can now if you do that switch between the different levels like flutter I think it's called [Music] is it branch now what was it to switch the versions flutters which were master channel was it okay so if you search for channel and execute that you can see you are on different channels and you can switch them so whenever I ask for a flutter Channel Master it will try to install that yes we can also use dark pad of course that's a good point dartpet.dev I think it's the name here we can also execute our dark Parts I just want to give you the tooling that I usually work with so that you have a head start but we can also start with the dev inside of the web if you like don't know if we can make that bigger but yeah that's of course also an option what is Dart pad it is inside of the browser so inside of the web and here inside you can execute code and write code as you please and then you can share it too because you can see this is currently running locally so if I for example execute here or write some Dart code so and let's say we print something hello world which will be the basic tool that we write it also shows you errors that you have you can fix them and if you press on the Run button you have here on the right side the console and what's also cool down here you can see the documentation right away the only downside that you have in Dart pad is you cannot jump into methods you cannot read what is inside there and I will share that with you also later that you can see that okay so much to the tooling that we need so installing Dart if you need to we can use start pad to have at least a foundation today and what is else Visual Studio code if you need some more advanced development or you want to develop locally besides of that we need a terminal like this one for Windows it's Powershell or Powershell or a CMD is the name I think and yeah I think that is the most important part that we need today so back to clicker what did I start chip so dot syntax overview if you want to get started with dart what I would say is if you check out here we have the so-called language tour so if you go to language you get the syntax Basics like variables operands commands comments metadata everything that I will explain to you you will see inside of this website you can find everything but in my opinion it was quite hard to identify everything here so it's not giving you an easy running run through but you have these tutorials here where some parts are explained you can find how they are working I recommend also to check out the code Labs that I added inside of the resources tab because it gives you this cheat sheet for example with things that you can consider it gives you an introduction if you are a Java developer yeah also it labels null safety and things like that good so now that we have that let's switch to our Dart pad I already created from time to time here let's hide dead so so I already created now multiple times this main function but let's understand quickly what is this main function actually and what is a function and why is it different colored you know all of these are good questions first of all void for example is a so-called keyword that means if we check out the documentation of Dart go to Docs and search for the examples let me quickly search it and search for void then we find it and let me check if I find the keywords okay so where was it actually I searched something it's not this it is the language tour where is that language cheat sheet effective um overview okay anyway then I explain it by my wording but a keyword are words that are reserved for Dart that are not allowed to be used in a different main void in this case means nothing nothing is less than none null so you could have something like this but which is also a key word but this here is different to this one void means we're really nothing so this method main will not return anything it will just run and after that it is silent nothing happens if you could for example return also null which would be a value so it's really a bit weird because null is also nothing but it's not nothing nothing okay so white is really we don't want to return anything from this method what does that mean is whenever we execute main we don't want to have here a so-called return word it's also a keyword you are not allowed to use that in your programming language and we don't want to return anything so that's why it's getting red probably now because we say we return nothing and it cannot return our string okay what do we have else we have the name of the variable of the function in this case Main and then we have these two brackets these are for parameters so I will now add a parameter because the um the void method is allowed to have parameters it has the allowance to have a list of strings inside so and I should make that a bit slower or smaller and now we come to a point where I would like to quickly use vs code just to share the knowledge because that means now this here is again keywords list is a keyword string is keyword and args is just a parameter name I can call that whatever I want in this case so things arcs test whatever I like but what we can see here we return a list of string so you don't have to understand that completely but what you can say is there is coming something into this method so inside of this function now I can use that so for example print test so whatever it comes here inside can be printed here so how would that look like for in this case that because the main function is our entry point for every Dart um program so that means if you are writing flutter there will be a main function if you are writing Dart there's always a main function Dart itself so when you execute this command here is a program right and it searches inside of your file that you provide the main file to execute so if we say now main.dart and execute that we get an empty list an empty list looks like this that's the reason with print which is a keyword and this is a function in this case which doesn't return anything but it takes a list of objects or an object inside of it and then it just announces that to our terminal so it writes it down here so with that we have a possibility here an easy way to show what is inside of a variable I can also add here text like for example hello world and instead of tests let's call that names and I will start this tool again and we see hello world but what would happen if I add now for example instead of world we would like to see what is inside of names and I'll pass in here Max so this is the parameter that I provide this is means Dart main Dart is executed and I want that Max is written into this variable here if I execute that now we can see hello and it executes or it shows us the list with Max inside what would happen if I add also marked up into the list aha hello Max with comma separated Marta that is also pretty much because we are going into the deeps here because this is a list and things like that but for you important is we have a method or a function in this case called Main inside a function it is always consisting out of two things the parameters this is this part and the function body this is the part down here this one that is now red so this part so if I execute with print hello world so yep we can see this part is our function body this part are our parameters here and this is the name of the function and this is the return parameter okay that's already quite a lot if you have understood this you have already really a good starting point for any programming because this gives you the possibility to write your first own programs without any issues you know you have already the possibility to print something out and you have the possibility to write something and that's already pretty cool do it now programming what we want to do is from time to time give other developers the opportunity to understand our code better usually we try to write our code as good as possible so that everyone understands without reading anything so you don't want to join documentation to understand the code that is written there you don't want to use an AI tool to convert everything so that someone can read what you have done but if this is not possible and from time to time that is the case then you need some wording you need to explain what this code does so with that you have the possibility to write documentation like for example this method prints hello world into the console let's make it this way so that means we have written something into our code that will not be executed that means if I run now this part here will completely be ignored from Dart and as you can see on the console hello world is only executed another thing that you can do is making these two points here and like this and comment like that uh use the end form line for document try writing what's that for an info I don't know that ah all right sorry that is JS talk uh I got got a hiccup for a different programming language okay but with three stars you tell Dart that this is documentation you want to document the main function in this case so the main function does something and if you have ever checked um on pub.dev for example well let's wait quickly so this is also completely ignored and nobody cares but if you have ever checked for example pub.dev and if you go into share Plus or something and it has created a documentation with dart so API reference then you can see that here is text inside and usually if you click on these parts you can see all the classes with their text inside with the Constructor explained what they have done and things like that not very good here but if you are searching for a library that is more flutter related like I don't know what is a good flutter package uh let's just try the Firebase out I think they are probably quite good with that action code info yeah so they have a class they announce what exactly this class do and you can see for example this part and the implementation and things like that this is always done if you are using these free backslashes that means you are allowed and you are encouraged more or less that um yep that if you are using this you can explain the dart code way more in detail you can give that for example deprecation methods like deprecated and could give that information why it is deprecated that means if you are using this you would say this this main function is not allowed to be used and you should use something else so it's deprecated not used in the future so this is the dark docs also a very interesting topic but I will not jump too deep into it but you can generate automatically documentation from the dart or from Dart which is pretty cool and pretty helpful especially if you want to share code with other people foreign so much to the comments with that you are allowed to improve code for everyone make it more readable and understandable I hope that is clear now we go into a different topic variables my girlfriend had a long time to understand what that is but let's try to make it as easy as possible sometimes you want to put information into a box you can imagine let's say I could open this part and I could put something inside and whenever I'm interested I take the same box open it and get outside of a banana for example I put the banana inside and whenever I need it I put it back outside so how would that look like we have a variable we can use VAR for that we can use final for that we can use cons for that these are alts all keywords from Dart that we are not allowed to use but for Dart it's important to understand so we can use VAR for example let's say um name and this variable name is now empty there is nothing inside but we want to have for example Max included so now we are coming to this fun part we say there is a variable and it tells us already that it is a string string is a a string is a chain of characters and in this case we have one two three characters that is inside of a chain and that's a string so this is just the name of it but what we can use now whenever we like we could say in our print name so for example hello uh let's do it this way hello world hello name I should write that correctly so what you do is I create a new chain of strings or characters and put inside the variable name inside so hello name but what I could do is also print it again and say um you are my friend and then add again the name variable and if I run that now we can see this variable is being used twice so I put Max into the box so this is Max this is the box I put the max inside of the Box pulled it inside of hello Max pull it one time out put it back in and whenever I need it again I pulled it back out so that is a variable and I can use that in all kind of things so for example I could also create a VAR last name and change that to my last name so and now we can also do that with that and adding it here but we don't want it down here and we run the whole thing and we can see in the top one I use both variables and the bottom one I only use the first one another good thing is if I want to change that now in any circumstance I would like to call that now Mata and the last name is now for example um wasabi so and I run that now you will see that the text here will be changed completely so marked up is now used in different places and this is cool because I can change that over time so if I say for example I like in the first place I would like that the name is marked up but now here I take the same name and call it mic now I have changed it and if I run it again we can see we changed the value inside of it in between that means we have a variable markup we put something inside we use it when we need it then we changed it so that means we have the box I put inside banana now I first time use it then I go inside and switch it to something else like for example that bottle and whenever I need it I pull it out again and can use it more frequently so I hope that was clear that is a variable we will use that at all places but really crazy we need variables all the time so now I told you already there are different data types the first and basic one that most people understand quickly is the string why it is a collection of characters as I said and with that you can write things inside of your terminal but there are also other types so we can change this VAR for example to a string now it is strongly typed it was before too but now we make it more obvious to other Developers so now there is for example the integer that's for example an H is an integer and with that you can maybe guess it already an integer is a full number so let's say marked up is 18. she isn't then we have that here and now I can use this H as you can see it's bluish underlined and as you can see we get this error because it's never used so it will tell us hey you should understand you something that is not used so let's create a new print where we say hello name and last name you do not look like h and let's see what happens if I execute that so we get is how we thought we get this number line with hello Marta bazavi you do not look like 18. interesting why did that now work I told you that this is a very big string yeah a character line but this is an integer so why does that work you could think well the print method will do that but that's not completely true the main variables like integer string double I think it's double yeah uh like double has a function implemented called to string and this two string method will be automatically executed whenever it knows or whenever Dart feels like hey you want to have that as a string actually and with that you get a lot of help there from Dart Auto boxing what means Auto boxing converting in perimetera into an object responding rapidly exactly sorry the Java compiler applies okay yeah Auto boxing I did not know that this has a specific term so thank you very much the bad thread that helped me auto boxing very good but yeah it will execute that and whenever it feels like it needs to be a specific type it would change that type too for us so that means also for us we can also implement this tostring method and actually every object in Dart and now it's getting really again interesting because everything in Dart is an object so that means a string is an object an integer is an object and because everything of it is an object the parent is the object and it always contains this tostring method and we need to override it under the different paths okay good for us we have that then next primitive type is for example a double that's the height for example and also here we have an interesting number because this is oh how how high I am I'm 190 or one point zero nine centimeters so probably we should call that in centimeters so again very interesting now we have a dot inside that means we mean here float commas that means whenever we have a number that is um your height is 1.0 uh hide in cm execute so now we get this as a float number and as you can see the zero behind has been removed because I did not specify that it should bring that with this so there you can see there are also some parts that you have to understand correctly to make it correctly look like so if I add here a five and run it again then we will see it looks much better yeah yes well in centimeters good um is that even correct no I think it's in meters geez Max what is wrong with you in meters obviously you knew that I know so much better okay but anyway what does that say us is there are different primitive types and if you check out the dark documentation on dot dot def um let me do that quickly docs let's see if we find the syntax variables comments libraries keyboards ah here are all the keywords so all the keywords that we are not allowed to use as our developers can be found here we are not allowed to be using inside of a variable abstract for example what does that mean if we are going to back to our code that's not the best one here in our DOT pad we are not allowed to have for example a variable called um string so that will be complaining to us because this string will overwrite things and it's not allowed to have a keyword inside of your variable names so that's not a No-No a big not good so Esther it is for example another one so something like that it's not allowed to use these wordings inside of your own variable names or at least you should avoid it at all costs so I will probably also add that to our list and of relevant links because I like that so put that to Dart keywords good okay with that I start drinking something and then we will talk about build in types yeah [Music] good here we can see all the types that are built in a dart and flutter which called the yeah easy types more or less and the Primitive types are numbers that is integer double that are strings the character lines that I told you and it's booleans and booleans is another one that is very interesting and should be known and I should have already thought about that it's Bool and the bullion says if something is true or false so a very important in programming so um is male oh very difficult topic but anyway I say false false in this case and now we can print that too and say is she male or is uh let's do it differently print um name is mail and then is mail behind finish and run and this Boolean type tells us now if something is true or false and that is very important because we need that for bullish algebra and we need that all the time so we can for example create also here a so-called if statement and with that we are coming to the first part of let me see if the checklist is correct so we have data types we have constants and very final we will just take talk about that in a sec foreign yeah we can do that actually now so at the moment we are using always this verb VAR name or the type of the variable but there are also two things that are quite important that is one time final that is important because if if something is final we are not allowed to change it again so if I change here to Max now like we did before then it will tell you that this is a final variable it can only be set once that means it's not allowed to be changing during the run time so it's not allowed to be changed here and a more stricter version of that is the good old const because constants are getting created during run time and now it's even harder to change them so that means if you have a function you can set them so run and also here we get the error const is not allowed to be changing again because you have said it once all right so that is a huge difference and a const is changing to run time no while you can change final to run time so here final name is something a const is not able to change anymore because it's created during build time and will keep its value all the time there is null safety like in kotlin and um I would even say it is a stronger null safety in flutter because it's sound now safe and especially with the newest version this has also a huge impact on performance that means whenever you have something that is null like for example here I say this one needs to be set to name it is not allowed to be empty if I set now explicit null inside we get this is not allowed and yeah we would have to either say it could be null that would be one option and why is it not working all right a value type of type can't be assigned type is not ah because it's a compiled and now safety it's not even allowed it's weird I would say or I'm just not allowed to set it like that okay this is the case okay so if we execute it now we can see everywhere these null values and yeah so because of the question mark it's allowed if I remove the question mark we get all the errors here so it hasn't to be set to something so I can also do it here but I could also say down here name equals Max if I run it it should fail actually no it works perfect and the cool thing about Dart is now even down here have understood that I have set the value here so that means we don't have to somehow make these checks like if name unequal to null then then do whatever is down here something like that it's not necessary because they're not safety and you see this error message here it says hey this is not null it's not possible that it's ever null so remove this if if course here doesn't make sense so that will help you during development life cycle all the time because it's super strong and makes so much sense to use I really love that good const and Final so setting up development environment I started with that already creating a new dart project we did hello world example I think we did that quite well sorry I just go quickly through my checklist that I don't forget anything so the main function I think I explained that too so now let's go into conditionals yeah so now we have all of that but I said already that it's male is a difficult one right so we want to say when this is true then we want to print something else we want to print something else so as I said it already there is this conditional statements with the if else Clause so if is a key word again and now we have to add these parentheses afterwards and we can say is male equals to true then we want to print he is a male so and if this is true now only if Ismail is true this gets executed so if we run that and we can see here here's a mail but if I say here false and run the whole thing we will not get this line down here it's just empty so inside of here we created a condition with if and said when this condition is true then we want to execute some part of the code that also happens with the opposite we could say something like else and run that so print he is not a male or let's he is a female I hope that is allowed to say today yeah yeah so if I do that now we get hopefully he's a female great stuff and that is already a condition so if is male is true here you can see two question mark two equal signs will tell you that something is equal to each other as you can see this is also a function implemented so you can read the documentation about it it's super interesting to read also the documentation about things like that because you can override these things and people do that because if you want to compare two objects then you will need to do something like that okay but there is also a third one there is the possibility for an if else if else if something and else now I can check again so I could say for example is mail unequal to true and something else so for example the height in meters is larger than one 90. no it's wrongly written I'm stupid sorry it's else if now we have that and now inside of here we say uh he is a female and quite large I don't know something like that what a stupid idea I should have created a different approach I think but what we can see here is now it doesn't jump in the first one it says no he is a male that's not true he is male he is not male but and this is addition the height in meters is larger than 190 so that's why we get this part and it doesn't jump into the last else part down here here's a female so you can create with this the different conditions and write these different things down and depending on what is yeah correct it will answer here now nowadays A lot of people don't write only if statements there is a way shorter way to write these things and now I just have to look up the name um shorthand conditions conditioner direct name name name name name how to short if in flutter yeah I know how it looks like but what is the name of that uh I forgot anyway but there is a shorthand possibility so when you read different code from other people especially if it's only two sentences so let's say we would remove that if else part or else if part I would have only this then you would usually read something like the following um is male or print is mail question mark and then you would rent he is a male else he is a verb she is a female okay but anyway it does exactly the same thing try removing that code oh yeah okay now it start or identifies already that this here will never change so this here will never be executed if I make this true it will be exactly the opposite and this will be bluish underlined but we want exactly that behavior and what we can see is or one time it will execute this part here and this part here and one time it will create this part here so if I say false it will directly jump into the other part and with that you have the shorthand for true false applications right but there is more that you can do so let's say we would have that the the H is undefined okay we have never set age and we would say this is a question mark so it could be null so what could we do here we could print something like um we could print something where we say okay if the age is null then we return something else we say for example please provide your age and if we execute that these two question mark says if this is null then please enter something and if it's not now if I say for example this is 18 and run it again now it will execute with the number inside of it pretty cool so we have a lot of shorthand possibilities and if you check again the dart documentation over here you will quickly find um if we go to introduction and we search for control flow statements probably if here and if I search for question mark question mark not found very bad so where do I find it operators yep I think here we'll find it so you find for example if null that's two question marks you find the end operator that we used beforehand with this end end but another option is of course to have this or statement with these two pipes here so if we go here currently we have we had this if else statement but we could have also this or statement oh uh I have a Mac I don't know how to make pipes why do I don't know how to make pipes it's gonna be tricky is it this is it this no no no okay unfortunate then let's copy it quickly professional programmer that don't know where the pipes is on his keyboard sorry for that it's a new keyboard a new Mac and I have to still work with it but here you can say now if it is true on the left side then also another thing could be true let's say this is male is false but something else is true let's say the age is equal to 18 then we want to enter the first thing and we run that now it will be his mail because the 18 is true and this 18 is true and this one is false I told you already that there will be some bullish algebra um [Music] not bullish [Music] maybe we find the English one but blah blah blah the easier part that you need is this more or less so the and operator the or operator and the not operator and I think this article should be in English in the best case so that I I can also share that bullish here we go let's read this junk all of these secondary table monotone blah blah blah here you can see the graphics so If X and Y then you only have the parts in the middle if you have X or Y you have both and if you have not X you have everything besides of x and I think hopefully we have this nice little graphic somewhere too also an English article no unfortunate if x is Ayah perfect here you got it so if x is 0 and Y is zero then X and Y is zero if you have X or Y then you have it's zero because it's both false so if x is false Y is false then both are false if X's were true and Y is false then X and Y is false because one of them is false if x or y then it's true because both are true same for zero and one that means X is now false and Y is now true then X or no sorry X and Y is 0 and x or y is true if both is true then both are true that's correct um there is no ref in general objects in Dart are really hard to compare there is even a package for that is equal or equality or something Equitable that makes that possible like you have in um in in kotlin so that means if you want to compare a deep equality between two objects or the reference it's quite hard in Dart so if you have two objects and you want to check if they are equal you will need some kind of package and these packages are the ones that I told you overrides these equal equal signs for example inside of the operand to check if two objects are 100 equal so yeah that makes it quite difficult thank you Zagar great to have you ah I need to drink something so uh just quickly want to check a little bit around yep all good stream is still excellent connection everything works well the health is good node connection I'm really happy as I said the laptop is new the whole setup is new so I'm a bit nervous if everything worked well but until now big thumbs up everything works no delay no legs no problems okay but bullish Algebra I also add that to our resource list because I think that is quite relevant for most people up foolish Boolean algebra I'm sorry if I'm going a little bit too deep into the different topics especially now with the bullish algebra but they are like essential to understand how the programs are working at the end because this if statements are running everywhere you will have them everywhere included that's crazy so if you don't know it you will have a hard time to work with it okay so if else I think is clear then we have a different possibility let's say we have um something that could have multiple values like say we have an enum and inside of that enum we would have um what we have for an enum so for example yeah Germany England America and Italy and enum is just like an object we will not talk too much into it today but expected an identifier for an in Aya right so countries but it is a bit more complex data type and what I would like to do is make it lower Germany England and America Italy so let's say we have these countries and now we would like to create a so-called switch statement that means depending on which of these countries we land we want to do that is there a shorthand for a equals exp question mark way one way or two yes um that is what I wrote seconds beforehand I think I can quickly do it again so for example you could have um print and inside of this print you could have is mail this is your expression you say if this is true then you enter true and else you say it's false and then you can enter depending on what you want so you could reduce this if else statement to a very easy one-liner compared to it so I don't know what the shorthand that has a specific name I think and I forgot it but yeah it's possible absolutely and should be used in most cases so I will quickly eat my banana just to have some energy and if you have some questions bring them in that's perfect timing foreign good okay but now back to our countries so let's say we have a list of different things and we would like to only go into separate parts of it so if we have a so-called switch for that now I can part in the countries and if we switch these countries uh does it work like that I think I will need to specify one so I have countries here and we say I take countries dot let's take Germany for now so if I have that what I can do now is I can use that to say we switch over these countries and now depending on what is inside of here we have different cases so why is it complaining so much missing calls yeah exactly so the warning here already tells me that there are missing cases for all the things thank you Powerpuff ternary operator is the name ternary operator obvious how could I forget that so and thanks to These Warnings it tells me already that there are missing case Clauses that means I have a case for example for Germany uh countries dot Germany and inside of here we break and if this is Germany we would like say we are in Germany so did I do everything correct or is it complaining yeah countries Germany see that works out can I organize here yeah form it perfect look how beautiful it is so now we need a next case and this is not Germany let's say we are in Italy then we want to say hey we are in Italy form it again great so if I run that now what happens is we have this country's element where we have Germany saved inside and it will complain now about all the missing other parts but what we can do is here for example also a default the default is there where we jump when all the others are not correct so we are not in Germany we are not in Italy we are in India so we are somewhere else so if we do that this will be the default case so if I enter here for example something completely different like America we have not covered yet so it doesn't exist so if I run here we will run into this default case we are somewhere else we don't know where but we are somewhere else that is very good if you for example call an API and you don't know exactly what is the end result out of it then you could have a mapping where you say hey I tried everything to map it correctly but I don't know what this is so it's my default case and here I just spit out that's wrong yeah I don't know what to add here and with that you have your cases you have a list of this enum is enumeration so you have different values inside of here you have this variable Now set and if this is something else you fall back into the default case the break part here that I have entered is important because if I don't add this break and let's say we are back in Germany uh break return ah interesting I did not know that but it seems that Dart is not even allowing it in JavaScript for example you would have now the problem that it would just run through so if you don't have a break method it will only enter via Germany it would all also explain we are in Italy but thanks to the good old flutter or Dart in this case we get hey you are not allowed to do that either break return or throw so return would return a value to the method beforehand that has called fro is if you have an error you say throw error and with that you can execute that and it will finish the command nothing will happen anymore and it will show the error inside of your terminal but we don't want to do that so let's break it here good Ismail is not used anymore so remove that and we don't have here arrows so so much to the switch statements I think there is not so much more to tell you these are important to yeah switch the countries if you have more multiple values then you can use that it's an alternative to the if statement you could do the same thing for if there are strong opinions that people say you should never use switch statements you should never use if statements a lot and things like that don't trust these statements too much switches are inside of programming because they have their value if you think your option is the perfect case for a switch scenario think about to use it never get into too much opinions here it is a performance fight I think about the milliseconds I think there is actually a benefit or a disadvantage to use the one or the other but this is so microscopic that you usually don't care it's only if the you make a very performance optimized application and here comes some sayings from performance experts never fix a performance issue before it appears so if you don't have a performance issue don't try to solve it because the time you invest into solving it will be way heavier than it's even necessary if it's anyway performant already then we come to the next big topic Loops I love loops loops are great so let's say I remove here a little bit just to get a bit of clear state and inside of our main function we don't need that too inside of our main function we would like to count now to 10. inside of our terminal we would like to see one two three four and so on and so forth how can we do that a computer is quiet ah I don't want to say it but let's say he is a quite stupid one he only understands the basics and I want to keep some of these things something like that so now let's count to ten how is that possible first of all we have to create a loop for it that means we want to iterate over something and do it multiple times we could now write for example print one and then we take the same and say print two and I could do that all day long right so I have here three four five six seven eight nine ten and I could change all of these three four five six seven eight nine and ten and yes that would count for us oh let's see whoa great one two three four five ten but you know I'm a programmer I hate to write things rapidly multiple times I hate to see something like that because it's not necessary there are better tools to that so for that we have a so-called for Loop a date means here we can specify a number so example VAR uh I equals zero this is our index for now so we want to use that to remember our number where we are at the moment so at the moment we are at zero and I think because it's a VAR we could also say it's final actually and now we want to say is the index smaller like this is our condition 10. then so the for Loop consists of three different parts and I will finish it quickly and after that we will talk about it so first of all this is the Declaration of the index we want to say what is our index then we want to give our condition whenever we finish our Loop we check this condition if it's still valid so if this is true we go again into this Loop and the last part is we want to do something with our value in our case we would like to increase our variable uh okay it's not allowed to be final sorry for that good that means now we increase after each turn of this um Loop we increase the index by 1. so that means whenever I print now out the index here inside it will run 10 times inside of this for Loop and print out all the different values too so execute it and as you can see it executes and we have we counted wrong oh no how did how could that happen so as you can see we started with 0 and go to nine so that is not what we wanted we have two options to solve that we could say we start with the index one I would not recommend it because in programming usually the index starts always with zero that is always important if you have a list later and then we can say that the condition we say that the index should be lower or equal to 10 but if we execute that now we will see something ah now we have 11 inside so probably we have to increase that but what we also could do is say we increase the index by the condition by one and let's see what happens here it didn't work ah now I got it yep so we have that and what we also could do is say we increase the index by printing it out so gotcha so one two three four till ten great stuff so we also just increased that number that's it and with that we have our first for Loop we count to ten without a problem then we have another loop that is called the while loop so you remember that we had this Boolean up here so bull um works well or works is running equals to true so while this is true we do something inside of this Loop so print um yeah let's say is running and here we want to have like a counter oh there's a question let's fix that first Also let's keep it like that let's add here the part and now why do I don't use plus plus index that's also a possibility and this changes that the index will be iterated or added before we jump into the loop that means when I remove probably here this one we can run that whole thing let's see oh this is a bad idea that is bad idea no reload can I rescue it oh no I did a mistake I was too fast and now it's broken did I destroy it yeah uh exit page please don't please don't do that at home what we did is an infinite loop as you can see up here we had this while loop and it was running all the time so let's make that fault quickly so that it is never running and what we can see uh zero one two three till nine and this didn't work either ah yeah the reason is because we are jumping into that part below here after we have run into the up into the loop so that means the first time we go inside we go always with zero inside and if we are coming here it doesn't matter if we do it beforehand or afterwards so um what here happens is whenever this method is executed do it before or afterwards that means if we would use for example like this and update it here and with nothing do here I think that would be possible let's try that yeah so what we did is now we did not increase our counter inside of the for Loop what we did is we increased it inside of our paint print method that means what we say is before you print it before you print it add one to it and then execute the next iteration of the loop so this is also a possibility I would personally not like that just because it changed the modifier inside of the loop and not outside of it but also there are use cases for it so feel free to do it when it is necessary so should working again great I hope that answered your question all right so now next thing we have this while loop here and inside of this while loop we would like to have also an index so let's say we have an integer called counter and it starts with zero now inside of this while loop we would like to print the counter so the counter is counter perfect love it good so the counter is counter this is what we say and here we will use now exactly what the bad thread said we want to whenever now we need this one counter and whenever we come into it we want to increase the counter by one now we do that and the problem is this is running we saw that seconds ago when I get uh panic and wants to change it quickly this while loop was infinitely running because it's running was never false it did never change to something so whenever we are now in this Loop we have to find an exit somehow a possibility to leave this loop again and the one possibility is to check for something so we say is running and then we say counter equals to 10. so whenever the counter reaches 10 then counter wait is that correct no unequal tip so when the counter Hits 10 then it should be is running false and with that we should go over to the next parts of the script so that means we have now a counter here inside of this while loop we count first with this for Loop and I will reduce that quickly to two that we don't get all the numbers here inside so let's run that and what we can see is now thanks to the while loop it is running as long as this condition is not true interesting so is running is getting false here so counter is unequal to 10 when it is got 10 and then this one is getting false if this is getting false inside of the while loop it stops running and that's why this while loop is now not Infinity anymore interesting enough if you ever work on a game development part and you would like to create a game or something this while loop is usually true that means inside of here there's just a true inside reason for that is you want to update all frames and want to change something on the screen and things like that so the beginning of a game is usually while true fun fact okay I reduced also that that we don't post too much inside of our frame here very good and after this while now we can do something interesting so let's say we want to do something and say hello world and we want to do it as long as something is false true so inside of here we have a so-called do while loop and now it will execute this the first time and we do it as long as something is true so if I put here is running yep and run that we will see that we count one two then we have hello world and because is running is already false we will not run into it anymore so we could check if the counter and say for example inside of that do Loop um so we take that first time we say is running is true again and if counter equals store or unequal to 20 uh wait is running equals counter unequal to five for example then it will stop the whole thing so if we run that now oh we will run into Infinite Loop because the true because the true I did it again sorry for that so I broke again Dart pad so hopefully we get the message again yep thank you actually the page starting the page again so that was a stupid idea let's take that out obviously because I cannot change that the whole time so counters increase and I have to obviously increase it so now with that we increase the counter and if the counter is false we get this wild bloop Falls and we stop doing it great stuff and I think I could even keep that inside of it because the we just set it all the time true and then false again not optimal but I don't think we even need that actually because we said that and I think that should work yeah perfect so what we can see is we run that four times the reason for that is we are already on a counter that is two I guess one two and what we could do is Hell world and print out the counter just to see where we are so yes as you can see the counter is on two three four five and if we would now switch that and put that in front you can see we will have one less probably yeah perfect so the reason is now we first increase the counter and then we put it inside of this running function all right that was quite complicated but these are all the loops that you need for programming everything else is considered out of these Loops at the end and should work like that so no issue here so now we could say great we are done right but not so fast let's say we have a for loop with 10. what we can do is whenever we can create an if statement and say index equals to five then we want to do something crazy and we want to break again uh break we had already in the switch case but also a for Loop can be breaking that means we print now the index one two and we stop at five and because of the break something will happen so let's see what will happen one two three four five six and as you can see six is the last number because with break we jump outside of the for Loop and say because this condition was true we stopped working on it we don't want to do that another cool thing is what we can do is if the index equals to let's say three then we want to continue and if we run now what we will see is there is a number missing there is one two three five six continue says us take this value and because that is at the moment not what I want to achieve jump on it with your forehead so increase the index already and don't go further inside of this Loop so with that you have for example if you only want to push out every second information like if you don't want the first the second and so on um so so with that we use the modulo operator a modulo tells us the rest that stays so if there isn't one inside of the index then it would stay one um over if it's 2 4 6 and so on it will be zero and whenever this happens we want to continue and if we do that we lose a lot of numbers and if I remove the break in this case we can see that only the E not the equal what is it called if it's [Music] um it's not translations so if it's not in a way you know what I mean right 2 4 6 8 10 will be printed out but the other ones are not visible so if I would change that to a one you could give that even thank you or uneven ah my English Today horrible okay anyway but you can see it's very easy to see all the numbers now and thanks to the continue method or continue keyword inside of a for Loop that will happen continue and break are also working for the other two so don't worry you can use them wherever you want all right questions to this and loops and conditionals and control flows in general no all right so what we could do is now starting to work on our quiz or better have a look on how the quiz is created in general so if we go to visual studio now let's have a look into the solution that I created already we have here something called a list of strings we will have a look into that we need that too we have a score we see we have a loop here and we have some interesting print methods and where we access things so let's say we have a list a list is a data type and it contains things like for example um let's put it back into our dark pad again we have a list of names we had it at the very beginning if you remember we had that when we were working with the arguments that we can pass in the main method so for example Max we have Marta Marta we have for example the bad thread the bad thread sorry up and maybe Powerpuff so if we have these names now this is great because it is a list of different names that we want to show so what we can do is we could for use a for Loop and say final name in names so is that written yeah perfect so now it's getting crazy I did use the for Loop like we learned it before but there is a possibility to let's say interject yes it's like an array in a JavaScript for example but compared to JavaScript it is strongly typed so we know there is a string inside and there is not allowed to be a null or undefined in between so if I have here a null it will automatically throw me an error there is no null allowed inside of here so pretty cool with that and what's cool now with this shorthand for loop I can print out all the names with this line of code so with that it's done very generics yes you have a lot of generics and that's sometimes an issue but it helps you a lot at generics is this part with this nice little tags in front and behind where you pass in the type of it you could also have that as a so-called Dynamic which is yeah everything or you can say it's a VAR and what's cool about that is it will then automatically identify which type it is so if I Mark that as you can see in the documentation we can now see that this is a list of strings good that means also that you can create your own uh yeah data types in the future where we work with these good so now we have this for loop with all these namings and things like that we could also use um you probably know that um if we have names which is a list there are methods on that and for example one of my favorite one is the four each that you can use and now here inside we pass in or don't do that I think that's complicated but anyway a list just contains information that you want to process in our case this is a list of strings and there is a list of numbers that you can create like for example list of integers where you say ages and now you would have for each of the participants up there and different age like his age or three five then you have a 28 and this is wrong because we want integers 28 the bad thread is today I don't know let's be kind 25 power puff I don't know how old is puffer Puffs let's say 12 years something like that so now you could say okay hmm that's not possible with this kind of loop so we have to switch that a little bit so let's say we have VAR in I I just take the number here and I is smaller than names.length so the length of the so of this list yeah is inside of here and then we increase I so and with that we can also read all the names by saying we print names now we have to pass it this with I if I enter here 0 this is just a number need that so if I pass it this number we and execute that and we get the first element in this array as I said the first element will always start with zero so if I execute that we should see now all every time my name inside of it but what we can see is we iterate over the whole part thanks to the length of the names if we check the documentation can we see that here no list Maybe yeah so how you can create them we can map them we can over each yeah not perfect anyway but what we can also do is we cannot only show with I all the names that we would like to we could also say that this person this person following person we have to use this one now has the age of or is ages I years old so if we execute that the following person Max is 35 years old martab is 28 years old 25 and Powerpuff is 12. so thanks to this I operator because we go through both lists we can enter that so now it's nice we have exactly the same length you know the first um is exactly that amount of length but the second is also what would happen if we remove one of these values and run the whole thing again hmm oh we have a range error index is out of range index should be less than free the problem is we try to access from the ages one element that is not there yet so what happens is dark was a nah that's not possible please fix that yeah there is an issue congrats I thought already that we can make you happy with that cool so so much to that that means in our case we want to keep that as an equal length so that our method here with the for Loop is working correctly you could solve that problem by creating classes but all that is getting too much into complex and I would like to keep that for a future live stream so that we can see and understand how the code is running inside of here so if you check the method the solution again what I did is I have created a list of questions and then what is the capital of France what is the programming language is used and I gave answer choices and as you can see answer choices is getting even crazier because here what we have done for the answer choices let me do that so we have the questions let's say this would be our questions and here we have our answer choices now I would like to ask you always three questions four um yeah the answer and what I did now is I created a do a two-dimensional array that means I have one list that contains lists with a string and that means we have not only that first array here we have inside of here also different arrays like the first the second the third and so on and so forth and all inside of here we have the answer like answer one answer to uh yeah that's four two and answer for free so that means in this list here we have more options right so answer for one and the last answer for one and with that I was allowed or I had the option to create a list inside of a list so that we have multiple answer possibilities so that means for this question we want to show these three answer possibilities for this question we want to show these three answer answer possibilities I make that a bit bigger so that it can read and then we have as a third part the list of correct answers and as you can see it's again a list of string with Paris and dart inside of it good lastly we keep our score so let's see if I can copy that or bring that over into our method here and let's create that from you so we have a list of string our questions which is a list where we have for example do you have a good question let's say um I have to think quickly what is a good question yeah let's keep it with the capital what is the capital of France question mark and the second one what is the programming language of flutter so and with this we now need uh possible solutions right so we have this list of list of string which is our possible answers so and here inside we provide for example for the first question we need to have Paris of course because that's the correct answer then we have for example what is Germany it's Berlin in England it's London we could even add more like for example what do we have else Perez Berlin London uh uh Washington why not Washington yeah great so now we have our possible answers and we need our last part which is our strings with our correct answers and I think I forgot something but we will do that in a second and the correct answers is of course Paris and dart good and here we miss something we need of course a second list with all these things that is Dart as the correct one we could also say JavaScript let's take kotlin let's take C sharp and let's take Dart and why is it complaining because the comma is missing yeah great stuff good now we have these three lists and we have the correct answers and that should already solve most of our problems now last thing what we need is an integer score and here we want to save our value inside so that means whenever we answer a question correctly then we would like to show that score all right Next Step I will go through my solution because time is getting a little bit short and I would give you also the option to discuss a little bit and or we have still an hour oh no that's good then let me go quickly to the bathroom and then we will solve that puzzle together how we can work here further so be right back [Music] [Music] foreign [Applause] [Music] [Applause] good okay so now first step that we would like to do to make our tool running correctly and I don't know if dark pad offers us the option so what we have to do first is we have to get an answer inside so someone has to enter something so for that we would like to take Dart IO import what is an import if we would like to have a package and using it or a different code that someone else has written for us then we would need to start I uh we need this import name so we import a package from someone else usually or we can create our own packages that we then use again the dot IO package is interesting because it allows us the STD in function hopefully does that work unsupported Imports oh no I thought about that so let's see yeah it's start i o right now so I think we will need that without that it's going to be quite tricky yeah it's not possible and the reason is of course because we are working in the web and so IO is not acceptable because I O would be the file system so I'm sorry we will have to switch to vs code for that one so I take that switch over here and we have our main function install SDK at the top you mean no no yeah that that's just the information that you have to download and do it on your computer so that means we will have to put that down here inside of vs code and now with the terminal we have to execute it so that means we have to execute Dart Main and then nothing happens because here we can now import the dark i o package at the moment it's not used but we will do that so as I said the STI DM allows us to access the terminal and now we can um print what was it uh something with Redline sync and this allows us to read something from the terminal that someone has entered so we want to save a string probably called a prompt or answer from user so if I execute now Dart or better let's print that too that we see also what we got prompted here and now we can execute that here and it waits now nothing happens so if I enter here now hello world it will execute and show us the text once more so that's of course a little bit hard to understand so answer from user is this and what we would should also do is before we go inside we have also the possibility to write something out uh I think it's right and here we can write something like for example please provide your answer well and if we go inside of here it will write that and as you can see thanks to the STD out right we stay in the same line so you can see we are now exactly behind the first paragraph So if I restart here quickly so then you see we are directly here afterwards this please answer your question so that's why we don't use print because print would create always a line break for us so if I answer now with I don't know one then the answer from user is one I hope that makes it clear so what we did is we write something here in this read line sync we put it in the answer from user and then can't we use input in Dart what do you mean with input is that we could use an input but all of these are flutter widgets and because we have no direct access to flutter it's going to be difficult is that what you meant because input would be something like HTML parts or something like that so this will be not possible inside of the terminal I hope that makes it clear sorry for that okay so we have the possibility to write we have this right lead read line synchronously and then we have the print of the answer but we don't need that yet what we want to do is first asking the user the question then we want to show the user answer options the third we have to check check if the answer is correct fourth add or yeah update the score of the user if no questions are more open than show the score inform the user if the answer is correct so input used in Python to get details let me quickly check what that is I the thing is we are at the moment not at python but it could be that python has something like that and it's just the same thing more or less it's just different name yep it's exactly the same thing so the the same what you have with um in Python you have this input and here you have this readline sync that we had seconds ago why don't I have it ah we are not here here so this here is more or less inside of this input function it's nearly the same thing so in Dart it's just written a little bit more cryptic I would say so yeah but it's the same thing like the input part no worries with pleasure so um this here is our to-do list this is what we want to solve a good tip for you as programmer is always to think about the steps that you want to do to solve your problem so first asking user the question showing the user answer options then check the answer is correct inform the user update the score and then show the score at the end if there is no question left all right besides of that check if the answer is correct inform the answer is correct and then of course show the next question all right we want to Loop that so that seems like asking this here seems to be part of a loop and then we want to show the next question if no next question is exist then update no update scores also part of this axis then yeah we have that showed and finish the game update score and yeah I the numbers are lost now but exit the game so let's see where five then this is six seven eight nine no don't do that so that means this seems to be in a loop right so one question then we go to the next question the next question doing all that then this is finished and so on and so forth then we have if there is no question left so we have asked all the questions then we update the score that's not true I think the updated score happens at the end this is just show the last or final score stuff like that nah all right so and then at the end we want to exit the game alright so this one here is for necessary we need that later so what I will do is I comment that out for now I just wanted to check if this is working for us even and I think we can even remove it because that should be no problem to implement all right then let's get into it asking the user the question so how do we do that we have the questions here and we want to answer now the first question we learned now how to answer the questions can and to make it very easy let's start with four final question in questions and then we print our question simple enough I know it's maybe a bit too basic that's true the bad but today we did not work too much with objects so I would like to keep it as simple as possible and we can do that with the objects in The Next Step where we explain these so in the next I think next live stream where I will talk about Dart Basics we would like to go into the objects and serializable objects things like that and then we can optimize I hope that's okay for you sorry if it's too basic so if we execute that we get now all the questions but we did not get the possibility to answer unfortunately so what can we do about that hmm first we need to get the possible answers out so for each question we want to get the first or possible answer and then we want to share all of them how could we do that the problem is if I use this solution we don't have an index we don't know at which question we are and we would need to check the question and things like that so quite difficult right we know that the first question list has the length of two and the second with the possible answers has also a length of two with two new lists inside that being said what we could do is changing this for Loop to our index approach like we say there is a number I we say it is long as long as the questions.length and last but not least we increase our counter of the I and now to print that we say we want to have I inside of here questions so we use our list and then we pass it the I and see now it should present to us also the questions yes The Next Step would be to show for each questions all possible answers that means what we have now is if we print the possible answers with The Eye Inside if I do that well let's make that the other way around like put that down here so if I execute that now we can see let's add a new print line just in case then it's easier to understand what happens here well clear too few positions ah yeah sure makes sense thank you we're clear again so what we did now is we entered the question we get the list of different answer possibilities but it's not really nice all right I would like to have one dot Paris two dot pair Berlin free dot London and things like that and the same thing for the second question so how can we do that we would like to question we get this but now we need to Loop through all the possible answers again so how can we do that we could try again with this final possible answer in possible answers and if we do that now we can print all the possible answer and we would like to do that with a string so one dot possible answer and now ah this one is the problem right now we only show one here that's also unfortunate so if I execute that now Ah that's close to what we want no it's not even we have to give here of course the index inside so we want to pass in only the possible answers from the first list or from the second list are we clean again ah you bet so we are able to see first Paris second Berlin but unfortunately the number up here is not updating so what we need to do is unfortunately switching also this to our bigger case of implementing so we say VAR J make sure that this is now a different name than here because this is for the outer loop now we are working for the inner loop and if J is smaller than the possible answers dot length we increase our J so and that will mean that inside of here we have again the list here we want to access now that's getting a little bit tricky but what we want to do is we want to go to the first list from the upper part right so we go to this list and then we want to get from this list the specific index on here like Paris Barrel in London and so on and so forth so we do that by adding a second parentheses afterwards with the J inside so we get through the first one first and then we increase the J1 until there is nothing left anymore so and inside of here the first parameter is J actually so it should look like something like this let's see if I'm correct run the whole thing ah not too bad the only downside again we have J is now with starting with zero so we have to increase that by one do that again and it looks quite good now let's do it again we have Paris Berlin but here are somehow ah look at that because I used the possible answers and not the inner list of possible answers it shows us only the first two options so we have also to increase that to Y and if I do it now we get all the lists because now I access the first list if we go inside of here we access the first list and say we want to go over each of these elements and that's why we see it now with this possible answers length inside of here because else we would access the length of the the first list here which only contains two right the first list and the second list I hope that was clear all right if we are here we have now entered the numbers and now we would like to ask before we go to the second question that means inside of here after we have shown the possible answers we would like two so what have we done now actually we have done this do I get somehow I had let's go here quickly and switch to the Emoji PDR what a wonderful website by the way and let's search for check mark yes this one thank you let's switch back to vs code we have done this show the user answers option we have done that check if the answer is correct we have not done that yet inform the on of course there is something missing we have also to ask the user the question right that means we have to do that here so let's add that quickly 2.1 just because I don't want to change all of them ask the user for the correct answer so let's do that so after we have shown all the information but inside of the question because we don't want to go further until the user has answered we ask him for his answer so final users or answer equals to STD in reads line sync and first of all we have to ask him so we make STD out for Out Printing right and now we enter here please provide your answer and I would like to have J and J1 like the length of it like I would like to have this answer from one two [Music] um possible like this possible answers oh wait let's do it manually so let's write nothing I will just show you first what I want to achieve before I write that now in I think that makes sense so if we ask now there's nothing happening but if I go here in we will stay here so first question and now we stick right and what I would like to do is giving the user a hint that he can press one two three four and he do not has to enter Paris for example so that's why I will add this hint here but I don't know the length of the questions of the answers so it could be that this here is four it could be that it's free let's remove that here for that so let me make that a bit more obvious so call that Dart so this one has a length for free this one four that could mean if I share this example here we could have one time one two four one two two one two six and so on and so forth so I have to update dynamically so inside of here what we would need to do is giving him somehow the possibility to know how long the answers are and we have that knowledge thanks to this line here we go in the first element of the lists of the first question and check how long it is and if I pass that in and I have not made too much mistakes let's clean that we can see now the number four because the length of these is four so if I enter here one and get the next question now it is free I hope that made clear what I wanted to achieve and with that we have the next step done so we ask the user for an answer and that means we can go up to our to-do list we did that now we have to check if the answer is correct so how do we do that we get the answer that is one two three four right and now we have to check if it's correct we have the correct answers and we have no at which question we are so that means thanks to this for Loop we are still with this eye we still know at which question we are that means inside of here I can do now the following um correct answers and taking the question where we are at the moment so this means this has exactly two answers yeah so we know exactly where we are here and now we have to check so that means if this equals to the answer then we do something like print correct else print incorrect so is that correct now we get one two three four but here we get Paris and so on and so forth Ah that's unlucky we will have to think about that because that will not solve our problem Direct so let's see I enter here now the capital of France I think it's Paris it's incorrect and the programming language of flutter it's incorrect wait why is this the case I already said it actually but what we can do is let's print the correct answer for I and what I also want to print is the answer itself so what the user has entered so if I do that and say it's one we can see it's Paris and one hmm and they are obviously not correct so what we have to do to Cur to make this really correct sorry to make that really correct is we have to pass that answer into the possible answers and pass it here inside as a number and as you can see now it's getting reddish underlined the reason is we receive from answers a string so it could be first of all that it is null that's the question so someone entered nothing what happens then so if someone enters nothing we have to tackle that and another thing that we have to tackle is it's a string but it requires an integer to pass here inside okay let's solve one problem by another so int answer index equals int Dot and we use a function now of integer called parse and if we do that we pass inside the answer and it still stays red and the reason is it could be still a null value but we are the maintainer of the code and I say with an exclamation mark here will be an answer inside I will make sure that he always will be an answer that is quite dirty and I know that and I will fix that in a second I just want to show you how it works so answer index comes here and now everything is green that was already a quite a lot so let's quickly go again over it what happens we asked the user for the question we get an answer from the user in terms of a number one to four or one two three then we take this number and translate this string that we receive into a fixed number that has no floating point afterwards we are checking the correct answer that we received to the question with the possible answers that we receive from the question from the user so we check if the possible answer that he gave is exactly the same like the correct answer if it is correct then we pass out correct if not we say incorrect so let's see how this turns out in our code when we execute the dart code what is the capital of France let's say one he still says incorrect okay I made somewhere probably a thinking mistake so let's print quickly out these two options again because that shouldn't be the case so go inside print answer index and print this here so that we know what is the answer so we gave Paris and we receive now JavaScript kotlin and dart ah obviously sure makes sense the reason is the same as I said the answer that we receive is starting with one right we say he is allowed to enter one but the problem is the array does not know that he starts always with zero so we have to reduce it by one this excess accessory here so if we reduce that I'm pretty sure we should get now the correct value let's see if this is correct still incorrect we get the ah sure and the second bug that we created is we have to check for the current answer so the possible answers for the current question which is I so that being said we check now for the possible answers of the current question and afterwards we are checking for the answer that is inside of here so now it hopefully works one correct so we get from the first elements the right thing so we can remove that and that's it so it checks now correctly gets the values let's quickly add this once more just because I saw right now that it didn't print out the correct value and let's try it again one now we can see the first is entered as one Paris is the correct thing and it's correct and with that we have solved our problem and also the same thing goes for the heart good sir back to our to-do's what do we have done we checked if the answer is correct we inform the user if the answer is correct and the worst possible case but let's say it's okayish let's make a print afterwards just to yeah have a little bit more breathing room and make it more beautiful so let's say Paris correct and dart correct and let's remove these to do the prints usually if we would have a live project and we would be a bit more advanced I would also require to write tests for all of that we will do that the next time I think because it makes sense to have test driven development in this case to write a test show the results try the tests see the results and I think that makes a lot of sense so maybe for the next time for the future Max whoever creates such a basic course it would make sense to show also how to write tests anyway if I have that now I enter something incorrect that works correct works great stuff um let's make that beautiful the answer is correct and the answer is incorrect good what is the next task update the score of the user so if the answer is correct then we want to increase the score by one point if the answer is not correct we don't want to do that so that means whenever I print now um yeah we can do that a bit easier remove that and remove that and down here we want to print the score your the answer is correct your current score is score so and if we execute that I can now exit Berlin we can see the score is zero if I answer something correct then it is zero still because this is the wrong uh order we have to first increase it and afterwards we show the message clear do it again Berlin and dart and we get our score of one good with that we have solved already most of our quiz right we have our questioning we know now we update our score show the next question I think we do that also already so we implemented our loop from the start and if there is no question anymore left then we show the final score and exit the game so that means when there is no question anymore we are done with all the questions we print out thanks for playing uh Dart quiz with us today print your final score is entering the score and maybe the possible score that would be there from off um questions questions dot length so that means I enter something something we got one out of two points and the cool thing is now all of that is done we exit the game we show the final score and we exited the game great all right and with that we have our very first quiz created and the cool thing is it's quite extensible right if I add here now a new new question that I could shake for everything like um who is moderating the live stream on flutter explained did someone try with which solution shed gbt came up I think jet GPT would be probably nearly the same I guess by it shouldn't just switch there anything but just do that it's a whole explanation of Dart I hope it will help you yeah so I think jet GPT will probably come up with the same thing it's a very basic solution here and it should solve the problem nearly the same way I guess so adding this and if I add here another one who is moderating so we could add Max Mata menu Deepak all of the people so and if we'll run that again thanks to the extensibility we should have now all possibilities Zack the only thing is we crash because the correct answer is missing so we have Max here never do that you have of course the possibility to write a code to exit the code let's quickly do that you have two options here because we are in the main function you could just run return that will stop the process will return out of it but it is not necessarily necessary because there is no code actually and I think there is also the exit command and you can say for example 400 and with exit you do nearly the same thing it doesn't make sense to do it here so let's put it somewhere up here let's say um yeah let's say before we see the questions even we just throw the exit code and if this happens done we don't see anything in the darts we could check out the dart VM logs that we would get the exit code but with exit you really finish finish everything off but as I said because there is no code to execute anymore afterwards there is no necessarily for an exit actually obviously we could do it don't know doesn't change anything I guess so and because we have emojipedia what we can do is for example I have a tada the party popper and add that here somewhere and if we execute it now we should see our party popper showing us the results Great Stuff so that's it for the easy let's say push of the first uh yeah solution here with main.arte we can create all the different things we go through the control view let's quickly check again our timeline what we have planned for today if I have solved everything no we did not the only thing that we have not managed is the functions I think we did not have the time for it so I will take that for the next one let's have a quick recap what we saw we had an introduction today about Dart in general why it is important why is this necessary what are the downsides what are the upsides what is Dart in general and why I really like it then we have talked about basic information like Dart syntax how you comment and dart variables constants and final variables we have talked very briefly about your first star project project we created a hello world project executed that we're able to share that with you then we had the control view a flow like conditional statements we have switch statements loops and break and continue and at the end and I did not write that down here we created a whole quiz app where we have the possibility to execute in our uh terminal uh great session when will be the next session for functions the next session I don't know yet probably in two or four weeks I have nothing planned there yet if it will be earlier I will tell you that you will see that on our channel so subscribe and hit the notification Bell so you don't miss anything anymore sorry for that can't be too the additional here is it necessary to have a Mech for flutter um it's not necessarily I personally like mac just for the development cycle it's super easy super super easy to use is it now mandatory to use it absolutely not no you need it if you want to create a an app for iOS because else you are not able to build there but if you app create an app for Windows or for Android you can directly use that so you don't have any necessity to have a Mac only if you want to work for Mac OS or iOS then you will need a Mac and here you have multiple options number one is of course buying one but that's quite expensive usually you could ask for a friend if he can lend it to you that's an option and if you just want to build something like you have your flutter code it works on Android and you just want to have it on iOS there are also options to yeah go to a university or so and asking if they have a Mac for free where you can just build and run the whole thing at the end this is how I started because I was an anti-apple person a long long time and started then later from my Windows computer to switch to Mac slowly just because I like the convenience I like the yeah underneath it's Linux and it's quite heavy to use it as a developer it's quite strong and at the moment I'm using this M2 Chip and this is so much power it's crazy really it's crazy uh can we build model classes connecting them to UI yes I want to have that yeah it's a golden cage that's absolutely true if you are one starting with it it's hard to switch again and I would like to switch to Linux actually but yeah never had the chance so far but yeah that's my learnings from that are there any other questions that I am happy to answer as you can see on the screen at the moment you have the relevant links you find them down in the video description just for everyone who's interested and I think I can also switch here now because we are finished coding we have solved that I'm pretty happy with it we had a very good session in my opinion uh I was really happy to have it a little bit prepared I hope you like that too I hope really you learned something can it run Far Cry I play Far Cry at the moment on Xbox live like this streaming option from Xbox so I can play it on my browser I like it it's good enough for me on quality of graphics and in Steam you have quite some games that you can play actually and I was quite surprised how good they work actually but I you can also see some downsides because yeah developers are lazy when it comes to Mac so if you want to play games Windows is still the address that you should go to or the new steam deck I hear the new steam deck is amazing so did I have everything recap of the covered concept yes yes next steps yes how do you can further learn if you want to increase our quiz application you can think about bringing color into the console this is possible by pub.dev creating some packages and you could increase like colors and having like beautiful green and blue colors and red colors if someone is incorrect and things like that you could try to enhance it with more questions you could enhance it with multiple correct answers so if an answer if a question is has multiple correct answers how you can do that you could even increase it by make it possible to enter correct answers and things like that with a payment Gateway that would be interesting yeah I would love that I think that would be sounding like a very good opportunity to increase the viewership because everything regarding payments and money is always very important yeah and if you want to learn more about Dart check out the language tour of course of Dart if you have a lot of interest I have also created a day the BART cohens I have unfortunately never finished that so far Dart cohens this is a way on how you can learn um how you can learn can I think that a dart Cohen's GitHub yep here you can share that with you so these dark coins is a way on how to learn Dart I unfortunately did not finish or go further with it so far until um yeah chapter two but it gives you the possibility to learn via tests so tests are written and inside of these tests you have to fix these tests to finally see the outcome I really like that way it is this is the way how I learned C sharp for example I would like to increase that in the future maybe with also flutter examples so that you create a flutter widget and it will test if this flooded widget is correct but until now I did have the time to go much more in detail here good yeah that's about Dart resources either managed to share that multiple times and if there is no further question now I would say it was a fantastic stream I'm really thankful for all of your support for your joinings for your questions for everything you did hit the like button if you like that session subscribe to our Channel if you want to know more about doubting flutter there is a getting start in flutter for this Thursday setup as a video I hope to see you there on Prime Time like if it's priming and else I would be very happy to see you on Discord oh that was a weirdly good accident from streamlabs right now but yeah if you want to join Discord feel free to do that if you have any questions to me or to the projects I'm doing at the moment put them out there and else enjoy the rest of your day and see you the next time bye
Info
Channel: Flutter Explained
Views: 1,654
Rating: undefined out of 5
Keywords: Flutter, flutter, flutter app development, flutter tutorial, flutter tutorial for beginners, flutter course, flutter app development tutorial, flutter explained, flutter widgets, flutter app, flutter dart, flutter for beginners, app development, flutter android, flutter android studio, flutter ui design, android development, flutter ui, flutter developers, mobile development, development, learn flutter development, flutter development story
Id: OBDWm6xSyT0
Channel Id: undefined
Length: 173min 58sec (10438 seconds)
Published: Tue Apr 04 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.