Getting Started :: 13th Oct 2021 :: Flutter Apprentice Book Club

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everyone can everyone here so scott we got a special day today what's happening absolutely oh but we're starting with the book club so let's see here um what are we going over chapters one and two of the book club we've got all kinds of great guests coming in to help us out with that uh but first maybe we should take care of some housekeeping yes please do all righty well let's see first of all how about the do's and don'ts we want to be decent constructive when interacting with each other you know on the chat i realize it's youtube let's try to be constructive anyway don't post anything that's adult content rude offensive i mean come on this is common sense don't advertise or promote things okay this this is not somewhere to try to get people to buy your stuff don't spam if you post a question please trust that we see it um there are a lot of questions there are questions that have been asked before we came on the air there are questions that were in twitter and that we want to get to just because we haven't answered your question yet doesn't mean we're not going to get around it to it and if you post it twice so that you can see it two times in the same chat window you're definitely spamming and you're probably not going to get answered harassment of any kind is not tolerated that's pretty much common sense you'll not only be blocked from here but one of the things that we do in the flutter community is that once you're blocked from one place we share our ban lists so it's one of the things that has kept it very decent if you get banned from here it's going to go over and translate to a ban in the slack and in a number of other places so behave so after that strong note um so we me and scott are gonna take a sideline on the beginning part of this as as we have some wonderful hosts with us and i'd like to on board daniella and ezra hello welcome ezra hi everyone hello how are you too well yeah super excited let me just start with myself and i'm estra one of the leaders of flood teresa's and i'm working as a full-time developer and i will be hosting the show with the danielle cox and you will see us a lot in the next weeks to come and we are here to help you stay motivated and you know reading through the book which is a great introduction to flutter and yeah danielle please oh yeah of course um i'm danielle cox i have been one of the leaders of the fluttershy's for quite a while now ever since emily left and uh absolutely um let's uh let's do this daniella do you have some slides for some of the people that we're going to introduce absolutely let's let's do that um all right so let's okay we have the do's and don'ts here um all right so so we there have been a lot of people that are involved in this and because of that we so we've got a lot of people uh uh that have been involved in this project uh both from the book standpoint and also from the book club and uh some of them are here today and uh some are some will be here in the future and that's one of the things that's great about the book club is we're going to be going on for quite a while here and uh we will have you know guests every week and we're going to run through this this way so we're going to introduce a few of them that we have now right now so stephanie i think we have a stephanie with us absolutely who's company on she's hi she's important both for the floaters and for this book hi i'm stephanie patterson i live in portland oregon usa and i am the tech editor for flutter apprentice um as part of the book team at raywenderlich.com i am also a co-leader of the flutterstas if you're not sure what a flutter fluttersta is flutterista is a woman non-binary who has a passion for flutter and we are so happy to have so many flutters actually involved in this book club danielle ezra and then sarah's behind the scenes right now so it's awesome uh we have one of our authors here today it's super exciting let me introduce you to mike katz hello thank you hi i'm excited to be here i'm a a long time mobile developer um one of the authors on flutter apprentice and just excited that we get to share the past couple months of work for our team uh with you all thanks so much for joining us i appreciate it so i'm gonna let uh i'm gonna let me and scott take a backseat here and the show is over to you guys and i think there's a couple more people you wanna introduce and then we can get to uh where we go from here so we'll see you guys later bye of course i had to talk while muted always uh we did miss one thing i want to go over real quick if you all don't mind i'm sorry simon happened to miss a little piece of housekeeping that is uh we wanted to go over some of the things with flutter community now flutter community in case you don't know is responsible for a lot of great things in the community such as the flutter community medium that has over six hundred thousand minutes read every single month we also have the flutter community slack with get this can you believe it fifteen 000 members 15 000 you can get to a lot of this through the official flutter websites community page right there and also we have the flutter community github this is for packages that don't have maintainers anymore but we don't want to see them get lost flutter community is also behind hack 19 hack 20 hump day q a where we bring you great guests such as kevin moore from the flutter team and project managers i'm sorry product managers miriam and chris so we also provide speakers for your gdg events and also larger events such as droid con flutter europe and also geekly's flutter global summits after interact we had 12 people on a great panel over in new york and then we also do things like the 30 days of flutter flutter vikings and the flutterista conference last but not least well almost we have interviews jay interviews people such as nilay and then brian egan martin jarrett from nevercode and philip anybody notice you know is mart are martin and philip really tall or is jay really short i don't know anyway there are also videos such as value notifier with that handsome guy and just about every week we do hump day q a so one of the things i do want to point out though is i said just about every week unfortunately we're all getting very very busy it's kind of hard to line everything up but uh what we're looking to do hopefully is hire a community manager but to do that we need your help okay flutter community need your support to be able to keep bringing you the kind of great content that we have been because simon and myself and national bunch of people were doing this as our hobby projects and we don't have hobby time anymore unfortunately so if you head on over to flutter community patreon at patreon.com flutter underscore community we really appreciate it you can help us out there will be some other tiers being created and the highest tier is simon's hero you can be simon's hero he will study your code to learn to be a better flutter developer and if you become simon's hero i will personally go get you a custom t-shirt made and send it to you okay so with all of that said i'm going to get out of the way of people that are you know part of the book club here and um can you show that for us simon all right well you've already met ezra myself and uh if you didn't already know simon and scott they they just did it and so uh you know we're all we're all community you know like scott said basically volunteers doing this you know enthusiastic about it we do have a couple of people that are actually from google and uh one of them is sarah and sarah can you come on and tell us a little bit about what you're doing now with google hi uh i started about two months ago to help eli as a flutter community program manager and i'm mostly in charge of the flutter meetup network which i will tell you about a little bit later but as part of my new job i'm helping to organize this book club so i'm excited to be here i'm also flotarista and previously a flutter developer but now i'm more on the people side yeah that's awesome sarah we love having you around i love this community so much i'm so glad i'm so happy to be here um i am very lucky that i have such great co-workers now as well so craig i'm not sure if craig is here right now he may have stepped away for a second um oh he's back yes he is here yes he's back hey craig can you tell us what your role in all of this is well i'm currently on the core uh flutter devrel team and i'll be reading this book alongside everyone and talking through the concepts of each chapter and we'll be kind of pseudo live coding an app that captures all of those things so it should be pretty exciting that's awesome that's awesome and uh we're glad to have you here craig um that's always nice with that um um i think we're up to the point i'd love to tell you yeah that's what i was gonna say i think we're up to the point sarah if you could tell us what we're actually doing here yes uh i need to share green share screen share screen yeah let's talk about the book club yeah here we go uh can you see my tab we could briefly see my tab all right let's do a slideshow then all right uh so yes i am the flutter community program manager with the flutter deveral team and we've put this book club together for you uh i hope you'll enjoy us and read through to the end so the the book is a wonderful introduction to flutter and if you have no flutter experience at all and you just read from the start and make it through to the end you're going to be a pretty good uh developer or you're going to know the key points of the framework by the end so you're going to go from zero to hero in three months um so it can be hard to motivate yourself to read a 500 page textbook we know this so that's why we've created the book club to keep people motivated so that we can have reasonable reading quantities each week and so we're going to read a little bit each week and i'm hoping that as you read you will join us in coding along a app of your own that is in a subject matter that interests you so in the book there are recipe apps and if if you like recipes and cooking then that's great go make yourself a recipe up like in the book but maybe it could be more interesting for you to choose a different topic and make your own app so you can see the the concepts being applied in a more general way so at the at the end of this series you will have a publishable app uh and we hope that you can share it with your friends and family and the larger community of learners that are here reading the book with you so yes each week you will please complete the reading assignment and work on your project app which will apply the concepts from that you've learned from the book to make your app better and every wednesday we will review the content of the book and we'll code our own sample app so you can see how we do it and then there will be a q a session and you'll get a new assignment for the next week and that that's it i just talked about this so um i think i should leave you with a inspirational quote which is from tony robbins the only impossible journey is the one you never begin i think just getting started sometimes is the hardest part so now we're all here starting together and hope we can follow this journey together okay that is that's it for me that's that's great thank you sarah um book clubs are a lot of fun and having one that actually joins the interest of flutter and learning how to code apps is amazing so thank you and uh again i want to kind of emphasize that um as a book club we're meeting every week now for the next uh ten weeks isn't that right zero yeah yeah it's around them yeah exactly that so that's gonna be fun uh what i'd like to do now uh uh simon if you can bring mike onto the screen can i interject something okay great um i think i think we're gonna let sarah and craig go for right now and uh bring mike on screen and we'll see i know we'll see craig later and i'm sure we'll see sarah later too so uh stephan mike can you tell us a little bit about how the book came to be and and why we have it and you know why is it not just a tutorial series or something like that yeah um um you know the the book uh came to be you know simply at um raywendelich.com um looking to expand uh the different types of topics that are covered on the site and uh flutter is a you know i don't even wanna say it's a new technology now because it feels like it's been around for a while especially in uh computer terms but you know it's definitely a growing um you know very capable very exciting technology um so there's a need community was asking for materials on flutter and then there were those of us who were around that have you know been dabbling or making apps in it that wanted to make content for it and why a book um because we like writing books a book is a different type of activity than a tutorial tutorial we try to teach like one concept at a time uh you get in you learn a skill and and you get out whereas the book is more of a journey we start off with a slow introduction uh we teach some concepts and we build up you know an app over time as you might uh a real world example one of the the main uh.com philosophies is there's no sample apps right we want everything to be practical and useful and reflect what you would do as a you know full-time developer making an app so the book is is like a complete journey from getting started to deployment and you know it says cohesive thing there are um you know screencasts there are videos series there's a whole bunch of tutorials and people like to learn in different ways so if you're the type of person that you know likes having a book and going at a certain pace then this is a good option and um for some people you know that's not not how they want to learn then there are other options available for that as well so um i want to ask your process about the creating it and how long does it take how many people you do it and you know it's not the first edition and how is the creating the second edition so can you mention about it to us yeah so there's actually a whole team behind the book so there's the three authors of myself kevin and vincent um as well as we have staff our tech editor we have cesare uh fun past sandra english editor and there are several other people who are involved in page setting uh art design um we have amanda who's like our like i don't know her exact title but she it wrangles all of us together and gets the the book out the door and and keeps us on on time uh there's there's a lot of different um aspects that go into it and what we did is we got together as a team um and we came up with an outline for the the book and we said what are the important things to teach what's a apprentice level we actually spend some time debating you know does this belong in a book for new people um new to flutter or does this belong in a book um you know they're more advanced concepts and how do we teach this so there are a lot of things that we we didn't cover and uh would have liked to but we just you know seemed like a little advanced or not didn't fit into the story and that's that's like a multiple week process of going through and just like figuring out what we want to to cover um when we started it it was you know i think i'm not even sure if version 1.0 was was official yet so that we debated do we include you know desktop and web um which we haven't yet but we're considering that you know another um edition so those were some of the considerations that that went into uh the the book um there and version two um when we said created you know we're working on flutter 1.0 and now we're at 2.5 so the the technology keeps increasing the things that you couldn't do before that you can do now we had some caveats in the book like oh you know watch out for this or you know um this doesn't quite work right and well those are all fixed now so we could take out those those caveats and and basically keep everything up to date with the latest um you know even up to the last minute we were updating screenshots and you know command line outputs and so on um and i'm sure they're probably out of date now since the the book was finalized and we'll update them for the next edition and so on oh yeah i guess that's a good time to bring up the fact that you're not the author one of the authors that that's correct yeah how did you all decide you know to take that approach uh so we came up with the outline together and um what we basically we said who wants to work on which chapter so the book is actually broken up into different sections and um you know i i took the first section vincent took the second section came to the third section and so on so each like set of chapters you know um has a single author so it's a little more cohesive and builds up from from chapter to chapter all right and that's we love having you here mike but you know seth is one of my fellow flutters so i'd like to kind of bring her on here and and ask her well how how is google involved how do we how do we get access to this book now for the book club so people can be going along with that and i'd like to emphasize that even if you haven't read the first two chapters uh you can still join in with us and and keep up with everything else coming up from that so i've got a couple of questions for you steph one is you know how do we come about having this book club as far as google helping us out how do they get access to the book and if you maybe just tell us a little bit about what ray wunderlich can do for us otherwise so um as mike was talking about we after we published edition one because of my flutter community involvement i was able to reach out to tim smith and so i want this on the record so it's going to be here forever because it's on the internet without tim's assistance and all we wouldn't be sitting here doing this right now um one of the things that i will admit and mike can probably attest to is um i set out a goal that google would absolutely love our book and i was pretty hard on some of the authors and making sure how stuff was written and when i did my process i had three screens and looking at google docs and looking at um you know all the various things plus our book and going through and making sure everything was there as part of our development of edition one um when we had our first few chapters that were made available those are the ones that are listed free um and uh tim loved it he posted something you know we had we had him involved he did reading he and chris sells also were involved um they with especially with edition two and um it was really great having their involvement and so um it was kind of interesting we were talking about doing edition one was published in the beginning of june of this year and um it did take us a while to get there um letter updates kept coming and then we had the the march event so then we postponed that because we wanted to make sure we get all the greatest things edition one was published without um null safety and then of course with edition two we'd planned on adding that and um we got word that uh google wanted to not only endorse our book but they wanted to make it free for everyone for three months which was amazing i was it i can't even describe how i feel um about that it's still you know i have to pinch myself every once in a while like okay is this really true um and then i look at all my emails and various things and yeah it's true and um so google made it available and um the uh there's a link and hopefully uh simon or scott can pop that up on where people can go um just go to that website you register for it and you have free access through january 6 of our online reader and it's it's there to use you also have the opportunity if you love the book so much and you want to buy it hint you can either buy it in print which there's a link taking you to amazon to order it we also have on a subscription um subscription uh that are available to purchase and with that you have absolutely link right yes at raymond.com you can have a subscription and you actually have access to not just our book you have access to every book that's available the professional version you have every book every video uh all the video courses um screencast all of that is included with that so that's definitely an um awesome thing you also can purchase through where you want ray wonderlic um uh to get the epub if you want there's also a pdf version right now i will say that there isn't the link that's there so once you've subscribed to the flutter apprentice free version you can send an email to support raisewear and then that way you can get your copy so you can have it make your own notes uh it's been an awesome journey um i've we've had support from the floristas from the flutter community from google and it has just been awesome and we want to thank everyone for their involvement there um one thing that mike uh had alluded to is you know they did the outline they started with the outline in june of last year and so they went through that process and we they started writing in september and so there's the writing process then it comes to me as tech editor and then i go through it then we have an english language editor that comes in goes and makes sure that all of our um writing is to the standard of what we have for raywenderlich um.com and then it goes to a final pass editor we have a managing editor so yes there's a huge um team that all trickles down i will admit some things get past us um we're human and um on the site where you go and you get access to the free book there is a link for the forums if you find there's an errata um discussion so you can go in and you can let us know if you find something we can make sure to get that updated um and it'll be in a later edition depending on what it is and so just it's a community so we totally hope you love our book we love it um as you can see i have both my book and i put the frame on my wall so i totally am loving um the the community for doing the book club the book club came out because google wanted to help us with um getting people involved and i love seeing the number of people that are watching the video live right now it's amazing thank you all for being here um but we're still here to answer questions and if you've got a question about the book the same place you go is the forum so um we can't do it without donation support we're joining us here our jonah join us here totally be here each week um i'm not quite sure what the gmt time is but nine pacific from nine pacific to approximately 10 30 every wednesday between now and um december 15th we're having the book club and uh sarah and craig can give you more information about the details we have each uh week we have a couple of chapters we're going to be talking about we're fortunate again to have mike here he uh wrote the first two chapters so yay mike did an awesome job and um that's pretty much what i've got here uh can they put the link again to get to the free access thank you the um the one thing i kind of want to jump in real quick is i i have the pleasure of spending you know a fair amount of time with with both ezra and steph and this journey with steph just seeing how excited she gets every every time she gets one of these emails or something i mean there were times where where we don't have anything scheduled and she has to jump in and say oh i'm going to tell you this this is so exciting yes so it's it's really been neat to see um and i'm glad i get to meet mike now but i still want my copy autographed by stuff and you know it's it's just a super motivator for all the community people to just follow and you know just go go in it awesome so do you want to discuss the chapter one and chapter two well i think the purpose of the chapters well let's bring craig in actually um and and maybe start with uh you know you can start showing us what's going on and tell us how we got there i think would be a good idea uh sure yeah so i have uh some slides we can just cover the content if we want to get right into that let's start doing it there are the slides okay so hi everyone my name is craig martin and i'm on the uh flutter devrel team um and we are talking about getting flutter what flutter is and getting it installed on your machine uh so as you've probably heard flutter is a tool kit for building beautiful cross-platform apps but this you know what exactly that means might not be totally clear it means that from one code base you can ship what you're building to android ios desktop for all three platforms so that's mac os windows and linux and the web which is pretty exciting [Music] so some more about flutter it's written in dart and dart is an object oriented c style programming language that will it has a nice type system that will feel very familiar to anyone who's written any swift kotlin java or typescript and it also has a nice single threaded event loop which means anyone with any javascript experience will feel pretty familiar dart also is just a very pleasant language to learn in my opinion so i think if you even if you come from a different area entirely or brand new to programming dart is a great place to start um below that right and next up you've got flutter has a fully customizable ui but it also ships with prepared material design from google and cupertino design from apple that are just ready to go right off the shelf so if you are worried about you know if you want your app to look exactly right on android and ios flutter is ready to help you out right away but if you also want to have a strong individual brand that you create yourself and then have that be consistent across all platforms flutter is also ready to go um flutter's open source flutter is led by google but it is contributed to by many so because it's open source you can watch its evolution you can participate in discussions you can submit feature requests and maybe most excitedly you can contribute and uh what do we have next here oh yes flutter is rendered with skia so this is pretty different than many other cross-platform solutions often imagine you want a text input in your app and you you're using a cross-platform solution and it uh it might offer just this abstracted idea of a text input and then on each native platform that you build to it swaps that out for the actual text input that is native to that platform so it'll use an actual input html tag on the web et cetera and there's some upsides and downsides to this the upsides of course is that that is you know what uh platforms are used for rendering and users are used to interacting with but a downside is that those kind of solutions can only offer things that are shared across every single platform and the customization of what they offer is also very limited because again they can only offer customization that appears in every single platform and flutter does this totally differently flutter renders everything with skia and it renders pixel perfect replicas of what goes on what is normally rendered on each platform so this means that customization options are wide open because skia can render whatever it wants and it'll it's willing to listen to you for uh you know any ideas that you have and this means that you again you know you can be totally consistent or you can uh match each platform idiom and there's just no limitations with flutter which is really exciting uh let's see some more great things about flutter flutter has this feature called hot reload and hot reload is if you've uh if you've done native development before hot reload is very exciting um in the old world a native app the compilation times is are very slow it takes a long time to build an app from scratch even in your development environment and this happens every time you want to visualize a change and you know five minutes is like uh is fast in this standard right so let's say you've got a screen it's deep in your app that you're iterating on right now and you realize oh this thing is it's one pixel off and you want to make the change if you are making a native app then you make the change in your code you click rebuild you go get coffee or you get distracted on youtube or twitter or something and then eventually you remember oh i'm working right now and you come back and you click maybe deep into your app again because it recompiles and launches from the start so you might have to log in again you have to click click click to get deep in the app and eventually you get to the spot and you look at the thing you're like oh it was two pixels off i guess and so you repeat the whole process again but with flutter this feature hot reload powered by the vm means that just what you changed in your code is spliced into your running app in less than a second so and you stay where you are in the app that's the stateful part of the hot reload so if you find out 10 clicks into your app that something isn't quite right maybe it's a pixel or two off you slide it over one pixel one second it just updates in your emulator and you know uh two pixels no problem i don't need to waste five to ten more minutes i'll just make another edit click save it slides over into place and you're happy and continuing on your way so hot reload is one of the most beloved features in flutter and i think you're really gonna like it um then the next thing is platform integration um flutter has c and c plus plus interop interoperability that's a tricky word to say let me tell you what um and it also has a thing that's called platform channels which means that you can call directly into kotlin or java code in android or swift or objective c code in ios so anything that is available on the native platforms you don't have to worry about going without because you can always just say forget it i'm just going to call the native code to like access this particular new hardware that's on a device or you know what have you so there's nothing that is off limits in flutter and we we chatted a bit earlier about the community so just kind of gloss over this a bit but there is a very robust community a lot of meetups the there's the slack channel which has 15 000 members there's the discord that you can join freely and is the core flutter team hangs around there you can hear them or i guess mostly read what they're typing to each other as they talk about building flutter day-to-day uh and there's just an an army of enthusiastic youtubers bloggers speakers who are producing amazing content all the time i personally have completed long udemy courses on flutter and you know their their content is often unrivaled just like this book you know it's just so thorough and takes you through piece by piece making sure you're not missing anything um so you're probably pretty excited about flutter i certainly am and think you should be uh but nothing is perfect and flutter is no different so flutter is not necessarily for everything and it's probably important to to call that out so uh flutter is fine for simple 2d games but skia its rendering engine is a 2d engine so both complex 2d games or really any 3d game flutter may not be the best fit for those simple games there's a minimalist game engine named flame which can get you pretty far but if you're making a real meaty game then probably a unity or unreal engine could be a better option also if your app is little more than native api integrations like if you are making an app that is nothing but uh augmented reality or a platform-specific machine learning app then again a native app could be a better option for you and lastly lastly uh flutter can make slightly larger binary sizes so if you're targeting if you want the smallest possible app to run on phones with limited storage then flutter can inflate the size of your binary a little bit now of course the bigger your app gets then that delta gets very very small so if you have a small app it might you know could even double the size of your binary if you have a very large app it might add half a percent or something but so your mileage may vary there but it's worth being aware of um a few words about oh i keep clicking the wrong arrow a few words about flutters architecture at the top there's the flutter framework and all the plugins and this is the dart code that you write or the dart code that someone else wrote and you just install and run this is where you spend most of your time under that there's the engine the engine is written in c plus and it does a lot of the heavy lifting as a flutter developer you basically never ever think about the engine but it's there and then below that is the embedder and that's what communicates between all the start code and the engine and then whatever operating system you're running on at a given time but there was that flutter framework uh top layer that we said you spend the most time in and within that there's more layers so it's just like an onion of onions which i think makes sense uh but the the top layer of the flutter framework is that ui theme and so this is kind of prepared ready to go attractive widgets that map to platform idioms so there's cappuccino and material fully baked ready to use drop in your app your users will not be able to tell a difference but often we've talked about that not being enough and that you want you know you may want to have your own brand so below that is just kind of a raw widget layer and you do spend a lot of time here this is probably the the meat of your ui coding in any flutter app and here you're able to completely control everything you want the styling you can have you know different typography text inputs different buttons controls sliders all these kinds of things and below that is a rendering layer this is where flutter starts to lay things out figure out what's overlapping what what should show what doesn't need to show again flutter handles this for you you rarely have to think about the rendering layer and then ultimately at the bottom is the foundation and that is where flutter starts to make calls to skia to actually draw pixels and there's some animation controls that are very nicely exposed you actually do occasionally get down to here because you know animations are great in any app and then gesture detection if the user taps on the app which widget did they actually hit right flutter takes care of that and that's all the way down to the bottom layer here um okay so installing flutter admittedly we're going to gloss over this part because a i'm going to want to delete flutter off my machine just to reinstall it and b it's different for every operating system so i could only demo it for people with my operating system but the instructions in the book are great so installing uh flutter is the next part and if you have not done it yet you are not that far behind the selling flutter does not take that long so don't be discouraged you can easily catch up and follow along with the rest of the book club and if you get stuck i get stuck all the time so that's no problem just reach out and uh there's all the community channels that have been discussed and maybe you discuss more at some point i'm not sure um and those are great places you know 15 000 people ready to ask questions with you and answer questions for you so don't feel discouraged and lastly we're going to do a quick hot reload demo and i am going to need to share my full screen for this because it is not in this slide deck uh so i'm going to hop back over here and click share my screen and i'm going to share this screen which is first going to be okay i'm i think i might be showing the right thing right now but the only way that i can find out is wait for the delay and see if this shows up on the live stream but it's not showing up i don't think it's working i don't know if we're going to get the live stream or the let's see what's going wrong here so um what screen are you trying to show at the moment great uh my main screen oh actually no it didn't just do it i thought it might have been for a second um so yeah is the youtube screen uh i'm trying to share my entire monitor because that's where i've got you know i need an ide and the emulator okay we could just do this later could do we could open the chapter two part with the hot reload demo maybe that'd be better let's do that let's do that let's uh let's bring some other people back on so uh ezra welcome back to the stream you can take it away from here yes okay ezra welcome back welcome back so sarah are you ready to talk about the community resources so if you get stuck then we can talk about it hi uh it's been mentioned a few times but it bears repeating that there is a wonderful community i would say that the community would be the crown jewel of the flutter ecosystem if i do say so myself so uh if you get stuck installing flutter or have questions about the chapters in the book there are a lot of places you can reach out and i am going to share a tab and talk about that this is fun share screen yes chrome tab community okay so uh uh that's the wrong one um so there is the flutter meetup network which is over a groups all over the world where there are active meetups that are having regular events to celebrate flutter that is a good place to find friendly flutter developers that can help you the organizers of the meetups have also been encouraged to host a book club series in parallel with this so if there is a meetup in your area then you can you can reach out and there might be someone there to help you although we do have meetups in many countries around the world uh there are still a lot of places that don't have them so there are also some amazing online resources yes one thing that i'd recommend is especially with the virtual environment if you don't have a meetup in your space you definitely can go out there and attend them virtually i've presented in nairobi and even one of our authors kevin had presented um overseas as well so even if you don't have one locally check to see about virtual the flutteristas we host like right now we're having this meetup for here um and it's virtual um so don't let people that are out there if you don't have one local look for one that's streaming you're absolutely right i i should have mentioned that um covid has really opened up meetups to online events and people are serving the whole world or at least their local region in their in their language um so go and find at least someone with your language and then there's a good chance that they have online events and can can welcome you but uh if you also want other help there are a bunch of online resources that are linked to in the video notes but i'll just go through them quickly here um if you get the book then there is a official book forum through the ray wenderlich site that you can go to and ask questions and that is specifically for people reading the book so it's a good place to be if that's where you are more generally there is stack overflow there's a lot of existing good questions there and people are answering new questions all the time as well and i think the dev reddit the flutter dev discord has been mentioned but there is also the reddit which is also sometimes frequented by the platform team and there's lively discussions happening there and you can also ask questions letter community slack 15 000 members lots of friendly people that want to help you and the discord so there's a lot of places you can get help and so don't don't let yourself stay stuck don't bang your head against the desk for too long you know you can just do it for a little bit you know try and work it out yourself but if you're there too long then please please reach out and then of course you can come here because this is at the end of the day a q a show so i hope you'll come back and stay around for questions that's it and danielle is back so we can also take her here and thank you for sharing this with us sarah and you know the flutter community was always super supportive and answering your questions and you know we can also help you out just you know get rid of the stock that you had so hope everything will go good welcome back danielle thank you uh yeah uh we're talking about going virtual more but then we get susceptible to this and that's the third time my uh my internet's gone out this morning which is nice and i tried to get on my phone i've been trying to get back to you all so anyway here i am hopefully for the rest of the of the thing um so we're if i'm catching myself back up we're discussing what we're doing uh i kind of throughout the rest of this and what one of the things that i think we always recommend to people is pick something you like that you're passionate with that you can you can uh that will help you decide what to do a because you're you could be a subject better expert on it and b you're going to be more motivated if it's something you care about and so uh throughout this you know in in the book they used a recipe app and like you know we said earlier you're more than welcome to do that but i know one of the things i really like is is astronomy and i go out and take pictures and i can only dream of having the uh astronomy picture of the day from nasa but sarah tell us about what we're going to be doing with this going forward i think you know with our our leading through this as we're doing the app sure so uh as we mentioned before we're hoping that you will develop an app in parallel to reading the book so that you get the chance to practice the concepts that you're learning because just reading the theory and maybe seeing other people's examples is it's not enough to really get it in your brain so you have to make your own code your own projects and um i encourage you to pick a a theme that you like and i personally like space and astronomy in a previous life i was an aerospace engineer so the code along app that we are doing is uh using the nasa astronomy picture of the day api so it's going to be at first we're just using like local data that is structured the way the api structures the data and then later it will be fetching it and displaying it and it it will have a like a list detail architecture so that you can see high level information of the pictures in a list and then you can click on one and zoom in and see more information about it and that was specifically chosen because the apps that are you are taken through in the book also have a list detail architecture so when you are choosing your personal topic try and think of something that can be presented in that way because that will help you to follow along most easily of course you can do something totally different but this is just our recommendation so there are and they can also and they can also do the if they can't come up with something they can also follow along um with what's in the book as well yes absolutely recommend that anyway yeah it's all it's actually multiple examples of something yeah that goes without saying i should have said it do your own thing and um then you can see what we do so you get you sort of triangulate the concepts and then you see it from all directions and you can get a better understanding so yeah that's how a great way to learn because repetition is how we all learn so follow what's in the book sorry follow what's in the book and then also follow along with um what is being presented here at the book club as well that's awesome and then come up with another solution just keep doing it and your brain will kick in and you'll save it because i for one can't wait to see what all of you do i i think i can't either you can all please you go sarah i was gonna say it's a bit early now but i'm hoping that as we get later in the series people will be sharing what they do on twitter and various places because i would love to see what people are learning this would be awesome to see in the twitter about what you do i think i'm a little bit lazy you know i don't learn mostly when i'm following a book i do learn when i just you know hence hands-on i just dive into it i have my own problems and i just go stack overflow to solve it so this is mostly the way that i learn it well i think like all of us and another nice thing though about having the book though is it does give you ideas yeah and you can go through and you can say you know i i don't really care about scaling recipes but that made me think of this you know and and i really care about tracking my legos or or you know things like that you know what whatever it is you can come up with an idea that that can help you uh yeah the the just the ideas from this can get you started and that's that's one of the beauties of the book that's one of the fews of this book being available for free for three months we should probably bring that up again if you haven't already gone and signed up for access i need you to please do that and then be back here for the next several weeks because this is a this is a great a great opportunity that google and ray winder like have gotten together to do for us and that's that's something that we need to keep in mind and uh make sure that we uh uh take advantage of because it you know it's it's only for a limited time you know um i understand this right you know after three after this there's three months if you want to read it you've got to either buy a subscription or get buy the book which is okay too and you can you don't have to wait to buy it either there's my little plug sorry but yeah it is free leave a lot of copy stuff we need to figure out how to work that out okay yet of the new book sorry i think that uh we should let craig start let's bring it back on yeah absolutely coding yeah and uh greg you've got something for us that kind of represents chapter two uh i do and i also have a uh the lost hot reload demo ready to go my there's the screen uh okay so we were talking earlier about how a hot reload is super fast which is important for it to be exciting and b how it maintains the state of your app so if you've done a lot of flutter or even just a little bit of flutter chapters one and two you've probably seen this counter app this is the default thing you get when you run flutter.create and all it does is count so you press the button and this number goes up as many times as you press the button like the text says now the way this works i'm on the wrong window here aren't i this is the one okay so this is the hot reload demo the way this works is you just have a counter number here and it is incremented this increment counter function is called every time you press the button and the number goes up and then set state is a magic function in flutter that says hey maybe redraw everything what do you think about that and so this all happens every time you press um you press the button now what if we realize ah this 9 that i have on the screen is too small i don't you know it's not good i don't know it needs to be bigger okay but i'm nine clicks into the app you know maybe i'm deep on some other screen i don't want to rebuild and click everything all these times as i iterate so all right let's just try headline three that's interesting and i'm gonna press save and in just one second the app re-rendered but we stay where we were and this is so much faster in any native demo we all just had to go have a bathroom break to get back here but maybe headline three isn't big enough still let's try headline two okay a little bigger this seems almost right headline one no that's way too set up a text no one wants that okay headline two we iterated so quickly so that's hot reload and it's pretty uh pretty cool i think i love that as when i came to flutter and started learning it a couple years ago and i thought first the fact that when you create a project you've already got an app so you can even get in and look at it but then the hot uh hot reload yes awesome thank you google i i i think that this is a good time also to point out though from the uh the humor that comes with the book uh they do everybody you know for hot reload does an example where you're changing the counter app and you can do it i know mine was like starting to double the number or subtract three or whatever from it to make it go but what they did in the book you know when you get the book and start reading it is uh they changed the text from you have pushed the button this many times to thou has to push the button this many times and just to give it that medieval flair and uh i just want to point out the fact that you know thank you it doesn't have to be dry yeah learning does not have to be dry it can be fun that was mike's creativity [Laughter] so all right all right um are we ready for some chapter two i think we are summaries i think we are yeah absolutely can you can you show us about chapter two yeah so if you've gone through chapter two uh and again if you have not this is not the end of the world uh this will just kind of be a little spoiler for chapter two for you but if you have gone through chapter two then you'll uh you'll remember some of these milestones so one of the first things that they do in chapter two is start to start to take out that counter app infrastructure and put in something that's more specific obviously in the book it is the recipe app and we're going with the astronomy picture of the day so here we have in our main.dart file we've gotten rid of most of the stuff we're down to just the material app this is a bit of an important anchoring app in any flutter app actually you can have a cupertino app here as well but they're similar and then the home attribute very important on any uh in the material app there we go yes okay great um anyway so the home attribute on any material very important and uh there was a point in the book where they just kind of stopped on a blank home page and we've done that as well we've got this scaffold this is what gives us the app bar the color is being drawn from the theme up here where we've got purple and purple accent uh so that app bar is being drawn in the scaffold and then the body of our [Music] app right now is just safe area which says dodge any notches dodge the rounded corners of screens you know we don't want to have our text clip in there so it takes care of all those annoying considerations and then we just have a blank container and if you come from a web background this is kind of just like an empty div so not a ton going on but we have also made our data model so i'm going to pop over to our apod file of course standing for let's try to be a picture of the day and this uh is very similar to the recipe model that they have in in the book um we've got you know when the picture was taken what kind of media it is you know all these attributes aren't that exciting to enumerate over a constructor here all these fields are optional but what's interesting is that we're going to prepare just like they do in the book where they kind of cook up the spaghetti and whatever all the recipes are we've got some samples that we're going to use and these are going to emulate data that we will one day get from the api so these uh field names and types and whatnot have not been chosen randomly they are going to set us up nicely to work with the astronomy picture of the day api in the future and we've just got some hard-coded examples here so now i'm going to take a step forward to the next step where we start to display the list and one thing i've noticed is that sometimes the flutter um hot reload watching system doesn't check it doesn't notice a git checkout which is interesting but now i've manually rebuilt and we're going to pop back over to let me make sure i have all the right screens up in main.dart things are now starting to get a bit more interesting because we no longer just have this empty home page it's not even in main.dart anymore uh home page has now been moved into a new file and i do recommend um you know sometimes the book has to pick and choose its battles for which things that it starts to it starts to talk about and folder structure of any big app is kind of an infinite question so um if you start to feel like there's a lot going on in this file it's always a good idea to break it out and add a new file so the home page has now been moved over and we are again we still have that scaffold in the app bar and our body attribute has the safe area we no longer have an empty div or a container in flutter parlance we have a list view and a list view is one of the most fundamental building blocks of any flutter application a list view does two things it first of all starts to stack it or it starts to order its children widgets one on top of the other you can also make them go left to right or right to left if you'd like but it starts to order its widgets in one axis or another and it also sets you up for scrolling which is important there's a non-scrolling version of the list view and that's called a column and of course then if you wanted to go left or right instead of up and down that version is called a row and those do not include scrolling the list view does and that's important because if you've ever used an app before you've probably noticed that not all the screen or not all the content fits on the screen at any one time and so we're able to scroll down and look at some of these pictures and that is coming from the list view now this builder attribute this is because we may have an unknown amount of these pictures and uh oh gotcha okay i'm hearing that the uh code people would like the code to be full screen so we are going to do this and then i'll make it even a little bigger and maybe this is too big uh we'll go with this but we're full screen and we'll just bring in the app when we when we want to look at it um okay so the builder here is more this is an efficient way to uh render and keep track of all of the children that the listview cares about because imagine uh you're writing a twitter clone or something in flutter and there's just been a lot of tweets haven't there so you couldn't fit them all into memory at any given time however many the api gives you you probably don't want to start rendering all of those ui elements at any given time so this listview.builder just keeps track of how far you've scrolled down in your list of content and only actually concerns itself with rendering things that are about to enter the viewport so that's pretty important pattern and then notice here we've also kind of farmed out our child like what our content is to keep this function from being too complicated and have too much going on here too much nesting uh we've farmed this out into its own build a astronomy picture of the day card method and that's down here and this just does a little work to figure out what are we talking about and then ultimately returns more widgets and this is uh yeah card adds some nice ui elements and we also see the column that we talked about here earlier the card does not scroll itself all of the cards scroll but within a card we don't scroll we just want to start ordering things top to bottom so we use a column and just like you saw in the in the book we've got some you know different decoration widgets here to kind of get us some nice white space and not feel so cramped so i'm going to take another step forward okay check out step four okay um let's see what all is new about step four this one is called add a detail page yes yes yes so um what we do now first of all we see we've got a new file here detail page so we're continuing to kind of expand our app but not put everything in the same file uh but a detail page involves navigation so first of all i'm going to rebuild and then i'm going to bring up the picture so we can show navigation so when i click on this picture which i just did the actual click probably didn't come through very dramatically but we've moved to a new page where we're focused entirely on that picture the picture has a kind of more pronounced uh you know portion of the ui and then we've got all this text which you know came from the api it's our little secret that we just heard coded it uh we can go back again this is just mobile navigation that everyone is used to so how did we do this in flutter well first of all the ui where this is back on the home page so the list of all the pictures we've wrapped our astronomy picture of the day detail widget in another widget and this happens a lot where you have something kind of working and then you realize oh i need this all to have some new functionality and so you wrap everything that you had in something that provides that functionality to the whole section of your ui and in this case that's a gesture detector and this is ready to detect gestures uh so we've got an on tap handler this also doubles as an on click handler for desktop uh basically just any quick interaction from the user and we're interacting with a navigator and we're adding a new builder or we're adding a new material page route with a builder and this is important that it builds the page later notice that this is actually a function so we aren't building all of the detail pages up front we're going to wait until the user taps on something and then we're going to start talking to the navigator be like alright navigator get over here i got a new page for you and then we finally build the page but they're not all built up front again that would just be catastrophic for memory and then on our detail page itself i don't know why it keeps opening these pages in the bottom of the file what are you doing vs code uh here we just have again some more ui these you saw in chapter two in the book and it will start to get very familiar as you build anything in flutter all pages well i guess not necessarily all but 99 of pages in flutter really the the tool tip hovers there are aggressive uh start with a scaffold and so we again have our app bar this took a parameter actually let's pop back here you see that on the detail page we're going to pass to this new widget which is an entire page a parameter we call it a pod and it is from our samples and it's the index that we're currently dealing with in our dynamic builder so that whole chunk of data gets passed to the detail page and it appears up here in this constructor it's required and we call it this dot apod and it's that class that we made up and then it's available down here below to use in our ui and again so we have that scaffold we have the app bar we have a body we have some more decoration and that is what gets us this ui okay we are almost done we're moving on to step five this was where in the book they add the slider to start scaling up the recipe we thought well what are we going to scale about the galaxy uh in this picture and then we realized well images of outer space are often pretty high res and pretty cool so maybe we'll zoom into pictures and i'll now get check out uh step five add interactive slider so again if you've done chapter two you saw how they they start to manipulate via the slider what the the scaling factor is of uh how much food you're gonna make how many people you're having over basically uh so we have the same slider here and this uh oh i have to rebuild before we can start looking at it in the ui okay and all right so this slider is drawn by this ui um i'm going to be clicking back and forth a bit here let me actually i'm going to go back on the full screen code sorry folks briefly for the good of the talk um this slider that we see here in the ui is drawn by this widget and what's interesting here is that we can supply a function that we want to be called every time the user updates the position of the slider and what we've done is scrolling up a little bit we have wrapped our picture in an interactive viewer and this is a widget that is provided by flutter itself and excuse me sorry and it allows you to zoom in and pan around and just kind of check out any part of a ui so a picture is obviously a great candidate for that and with the controller that we pass through the interactive viewer we can start to tell it hey this is how zoomed in you should be as opposed to having it just wait for the user to make controls or to make interaction uh gestures whatnot so as i start scrolling in here we see it zooms into the picture and then i can still pan around and this i think is a pretty nice little effect for especially in outer space um astronomy app and this one i think is going to be pretty nice zooming in so let's check it out oh look at all those stars actually look it kind of blends in with my background doesn't it nice you can barely tell them apart um so we at this point have functionally reached the end of chapter two there's more detail in the book of course this is just kind of to re-hit some of the highlights and talk about it all together no substitute for actually looking at the pages of chapter 2 with your own eyeballs but hopefully this was helpful and i think now we're going to open it up to uh any questions or maybe someone else is talking next actually i don't remember scott you are heavily muted of course i'm muted and my phone is ringing uh two offenses at one time how's that uh let's see here daniella how about you you ready to go yeah mike you ready come on i'm waving at people here thanks how about everybody but me yeah bye scott all right well he's controlling it though so that's part of how he ends up with that i i would love to make a comment of what struck me with uh craig's you know going through that and it is something that um maybe newer people to flutter might not realize how common it is but you know we often start off maybe with a text widget that says what we wanted to say you know and then we keep adding to that so some you know so like like what he showed on the hot reload maybe we change how the text looks but more more often you know we add you know a button around it or in this case the gesture detector or we add the uh scalable or things like that and that that's very much the way the way that a lot of us will code is you you start kind of at the middle part of that and then you just expand out and add widgets that add to it and i think that that's that's a very powerful piece i didn't want to really be lost i know we're gonna get into that a lot more but you know greg was showing us that um from the you know kind of by example there but i wanted to point out explicitly that that's what's happening and uh by craig i also sort of mean sarah uh for that part uh because she's actually the one that created that so you know everybody give a nice round of applause for sarah for uh for going ahead and creating us an example that goes along with it one thing i'd like to point out um i really liked how sarah and craig used the slider to do the zooming in where what we did in the book what mike did in the book is basically changing the quantities of for the recipe and it's definitely a great way to show how a widget can be used in different ways another reason as we were talking about earlier follow the book do the app in the book follow what's being done in the astronomy picture of the day i had to sit there and think about the acronym and then do your own so then you can do use widgets in different ways and see what's out there well one thing i'm curious about uh mike you know having written chapters one and two uh how did we do with our uh being inspired by that and doing our own stuff yeah i thought that was that was great you know i love uh you know the visual aspect of the astronomy pictures and um you know it was really really cool and a nice way of like you know having the same basically the same structure in the same widgets but a completely different app and i think that that's like one of the the great thing if you think about just the the base set of of widgets um in the flutter toolkit is you can build much you know uh and if there's not you know there's always you can just um you know find a package to import but definitely uh i had a lot of fun uh building this app and i know that i'm gonna have fun in the future chapters uh building it up so i would like to just take this moment to mention that for next week we hope that you can get into chapters three and four where you will learn about um widgets in much greater detail and can make the ui of your app more polished and beautiful and interactive so um please read chapters three and four and if you feel like tweeting about your app or your experience with the book it is hashtag flutter apprentice does someone want to put that on the screen while we're waiting for them to put it on the screen one of the questions that came in was asking about um null safety and the book is does uh address no safety yes so it is the sample and i had somebody ask me not as part of the q a here but i just wanted to make sure that it was out there that edition two and which is the free version is it does address no safety yeah i saw that in the code there those are some of the question marks you saw in that if you're if you're coming from a sea place and you don't really recognize what that was that's what that was there i i hope that everybody having seen you know what we're doing with the book club after uh with chapters one and two um if you've been on the fence and you're still here i hope that you will go ahead and go get access to the book and read chapters three and four and and let's do this all again next wednesday yeah absolutely and i think now we can take a little break and then after the break we can sure just so people know if you want to code along uh sarah was kind enough to to let her get help link be out there and so that's what's on the screen now um so i just want to point that out to people that's what that's the that's for the code here and um i would like to also once again you know if you've made it this far and you've been on the fence go get the book uh it's it's it's a great thing you know there's things to find in there that'll help you out and uh scott if you could just real quick share the link to the book again that would be great i was just going to say actually that got annihilated somehow when simon left we need it in the youtube chat and i can bounce it into a uh it's in there i can make a new banner it's in the show notes so if you just go to the video description i think it's the first link as well so flutter. apprentice giveaway there it is there it is yay now we've got all kinds of stuff up on there scrolling along it's like we're professionals so do we want to take a um answer some questions as um especially if we've got something specific to the book because since we have mike here yes we have a great one there by archer if we could share that um i thought i knew how to do this but i don't see it now but he asks uh yeah can you verify the number of divisions in the slider used in the book for recipes app it works better with nine is what he thinks yeah um and then you get ten values so it's you can play around with it um you know add and more and see what that does this the app it's kind of an arbitrary um you know decision just to show that functionality oh here's a good question what is the function of the keyword context i think that's a really good basis it's not exactly yeah it's not exactly a keyword so but it's uh it's all over the sample code it's everywhere exactly yeah um who wants to field it nominate you craig i was gonna say okay so the word uh context that you see that at any given point in your flutter adventure you'll often find it in build methods within widgets is your link back to the larger universe it's how you find out the screen size that you're currently rendering to it's how you find out what device it is the platform it's how you find out the orientation it's how you look elsewhere in your app and maybe we'll get to this later in the course but there's sometimes in flutter you'll have a widget high up that doesn't actually do anything for the ui it just provides information for lower widgets it kind of centralizes where and how you pass information around and that context object as well is how you go back up in your widget tree and find that supplier of information and all of that stuff is coming in later chapters but that context keyword is everywhere you'll type in a thousand times and it's really important good question speaking of one you'll type a thousand times const and if you are running flutter lintz you will see this over and over and over it will put little warnings all over your ide all day long const basically you use const when you can set the value of something before you compile your app and it's good forever and ever um let's say the color of the sky equals blue that's pretty much pretty much water is wet is a constant you can set that what's that there was an orange sky day yeah okay that wasn't the sky that was the smoke but it's a california thing folks anyway um basically what it does is it makes your app a bit more efficient it saves a lookup you don't have to have a setter because you're never going to set it it's a lot like final but even more efficient um so if you're setting a color to be a specific hex value and it's never going to change that's a cost everybody never going to change me it's never going to change for this build let's be clear about that uh you know if i if i've got a constant my favorite color and i say it's purple and you know a year from now i changed my mind and i want to rebuild the app i can change it it can still be the cons you know i want to point out the fact that it's it's for this build it's not right well when when you when you compile yes exactly right yeah we can say the compliant thing yeah but i i guess the follow-up question with that is and this may be more of a simon question anything else is there any downside to making something const um it's about how you construct i'd say yes there is about how you construct them right so you can't construct things from any uh expression they have to be constant values in themselves that means any value that's that this constant object depends on also needs to be constant so um it it has it has its purpose and and one of those is um we kind of touched on this just a minute ago but we'll cover this um when you when you use cons and your app is compiled it can it actually creates those objects during compilation and ships them inside your app this means when your app is running it doesn't really recall the constructors and and create new objects every time so it actually gives you a bit of performance boost as well my new bit but it all adds up so if you find you haven't prompted constant switch to final that's the other keyword you're going to have fun with so uh we'll just leave it there it gets complicated otherwise well it's not we've got that one right there so basically const is something you know the value of before you compile the app final you might not know the value of it before you compile the app but once it's set one time it's not going to change let's say you make an immutable list which is a list that cannot change you make it one time now that can be a let's get away from that example because the contents of the list can change and that gets confusing let's say you set an integer at the time the widget is created and you're never going to mutate it you're never going to change the value of that integer that doesn't mean that you can't destroy the widget and rebuild it that's the way flutter works that's why everything that you see just about is final because they're going to destroy the widget if you change it they're not going to you're not going to mutate it so final is for when you're setting it when it's created but you're not going to change it during the lifetime of the object and const is when you can set the value before you even compile and and kind of going back a little bit earlier um we were talking about some of the stuff i do want to point out the fact that mike does have in the first chapter he he talks a little bit about how the system works and what's what we've got there and you know the engine layer and and the embedder and stuff like that that we have or we're doing things so i i do want to point out the fact that if you're curious about at a high level of what's going on under the covers definitely you know even though you may know a little bit about flutter you can read that first chapter and that that shows some of that stuff in there there's an interesting one that uh has to do well with a lot of opinions responsive design but also we cannot forget accessibility settings if you start shrinking the text and the user made it bigger on purpose they might not be able to see it are you talking about yeah automatically changing the size of the text yeah there's nothing specific to to make your font size responsive if the user changes their fonts in their settings it will change inside your app and that's all handled by flutter for you um on text style there is an attribute called font scale factor i think it's called and that's where you can override it if you choose to we don't recommend it and the best way to make your app correctly responsive around font size is to not put fixed sizes so don't use fixed widths or heights instead use paddings around your your text and that way if the text gets larger the padding gets large and the button gets larger so therefore your app is naturally responsive that is also described inside the book so you can uh you'll get to that eventually well once again since this is a book club before we get too far astray um what are chapters three and four about for next week give us like a high level of that yeah so people know what they're getting into um yeah there's a there's a joke in flutter it's not joke it's a but it's a whatever it's used like almost like that yeah everything's a widget and and so that's yeah that's basically what we're talking about is is giving you a uh a set of basic widgets and then gives us a little more of a flavor you know of you know what do we have besides the different types of widgets you don't get staple and stateless and stuff like that and so read up on it so that when you're here next week we're able to uh to go through that and we can see what uh craig and sarah have lined up for us uh and that's a good point i mean this week's book club is about chapters one and two it's the introduction i know we've got a lot there's experienced people out there um and uh you know they can answer a lot of detailed questions not that the questions aren't welcome here because we also are on top of the hump day q a but there is more in the book and so you definitely want to if you haven't yet gone and gotten free access through january 6 please make sure you do that and simon and scott one of them will put that link back up on there we go thank you i did want to mention that we've seen a few questions about constant final and if you're trying to understand the language because if you if this is your first time programming for example then you might want to or first time experience in dart then you might want to go check out this website which is the link dart language tour and this will explain those keywords show you examples give you reasons why you might use one over another and link and chat as well for anyone that needs it there's also um it's part of it's a separate book so it's not part of the giveaway at raywinderlike.com we also have a dart apprentice book that focuses on the language itself so and there's articles and all kinds of things that are on the website too that help with that too as well as the sources that uh simon just shared did you tech edit that book but the author of the book happens to be who my tryout tech edit was and i did some other stuff with him and so um i have looked at it but i have not tech edited it um it's a great book especially for those who are wanting to learn dart i have it on my ipad as well i'm going to go through and just pick out a few more questions from the chat if everyone's okay with that yeah absolutely so um this is one thing for steph oh the uh paperback versions are available um just to give people a clue you know when you're looking at it online it's hard to tell oh my god this is second edition has another chapter in it this is only 18 chapters there are 19 in the second edition um but it so if you go to the website when you registered and you go in there there is a link that you can um ordered the print copy and yes danielle i know what you've asked for i need more commissions if i'm going to be buying books for people and signing them you could buy one and then send it to me and i'll have that that's what i'm sure i'm gonna do i i'm really not asking for you to send me one for free yeah it's i got it it's totally okay i get it um but it's i had people sending me messages so daniel wants an autographed coffee what about me so anyway yes you can get a print book um there are multiple options for being able to get the book and the same holds true for all of the books on raywenderluck.com there's a question that is a throwback to the early days of flutter okay at the end of that question it says it feels bad to know to find basically to find out a similar widget exists after you went to all the trouble to build something manually and oh my god we some of us actually have a coffee cup that says there's a widget for that i don't have one but i want one it's like you you go through 300 lines to write something and then simon looks at it and goes but yeah there's a widget for that actually i would i'd recommend that everyone looks at the flutter cookbook on the photo. website there's lots of examples of using these there's also a widget catalog which also helps you find widgets but in truthfulness if you just go to this api.flutter.dev and find any widget you'll find there's a pair of widget class if you click on that it will show you all the classes that implement widget and inside that you'll find all the available ones there's loads they'll have descriptions go read up about them yeah i also discovered that oh my god all of us just started to talk but i also just discovered multiple widgets with the plotter of the week you know with that series discovered a lot yeah there are what 70 of them now craig something like that over a hundred oh is it 100. yeah but i mean public i don't know how many that you've got you know in the back room that you haven't released on youtube yet on youtube there's also this show that i mean if you can sit all the way through it it's really kind of boring it's super boring right so subscribe if you haven't done it subscribe to the flutter community youtube channel but also subscribe to the flutterdev um youtube channel because what we're talking about if you've never seen the widget of the week or the boring show those are all on there it's awesome craig what are you going to say uh there was a i heard a funny story yesterday actually from andrew brogdon who's one of the old flutter devrel folks some of you may know him he shared the inception of the widget of the week series which is great it's 100 plus two minute little quick hitter videos that completely explain oh widget for you but he said that he came up with the idea for that series because he got tired of proposing the development of widgets that already existed so to the question of you know do i have to remember all the widgets i mean no you definitely don't because it's quickly becoming impossible but also there's more you know there's more esoteric widgets and then there's very common you know just your base lego type of widget that you use in all all sorts of things and as you get into it more certainly those common ones they really start to feel nearby as you go to reach for something and then the esoteric things you might think like oh this certain scroll or the certain interesting behavior and that's the time where you can just kind of skim that api dock that simon was talking about and see if anything jumps out of you is like clearly being named what you want you know but you keeping the whole catalog in your head is not required or possible i don't think is really underused under utilized by a lot of people and it's quite complicated to use so it's not for beginners but flow does solve a problem which is um it gets higher performance animations and and movement of things on screen which is really helpful in some certain situations and we actually have a question here what is a widget um chapter three so there you go read chapter three handles that one there are two other beginner questions though i noticed in here uh yeah we gotta we can talk real quick say a little bit about it yeah we still should answer but definitely read chapter three i mean there's your answer i i want to know what is a widget for each person why don't we do that like what what does widget mean for each person we need sarah here hardly our english language editor could not get the graph of what a widget was by the time we get through the book she's like i finally understand what a widget is because she's not reading it from a technical perspective keep that in mind she's an english language editor and so you know we kept talking about widget and it was just it was quite fun to try and explain that to her it's too bad she's not here we could have her explain it so hang on so steph i think you've answered that daniella what's the widget from your perspective um everything everything everything's a widget ezra come to see the screen i would say just like a functional a little package that i can use it in everywhere it can be a little smaller with the smaller one or it can be a big one but something that works well i would just say it and read it craig if you have ever used react and you have seen a component then you're now up to speed on a widget but if you've not i would describe a widget as an atomic piece of often ui logic we spoke earlier about how some widgets don't actually impact the ui they just supply information to other widgets so that ui detail is not you know fixed that's an ironclad but yes it's a class that serves one role in your app often ui based and just like ezra said you can you know they should be reusable reusability is uh desirable in widgets and often they're they're rappable you know so a widget typically has a child yeah yes or children or children you know and that's not always true that's typically true there's actually a base concept for three types of widgets leaf widget single child widget a multi-chart widget if you them there you go michael what what is your concept of what would you do uh man i don't think that answers take it already so i would go with uh a widget is something that uh builds other widgets um oh it's hard to add to this i i feel like everything is covered i i think i personally conceptualize it in ui terms so for me it's like a little like a block and then i can like put the blocks together to build the ui except the block metaphor is not perfect because you can like put blocks inside of other blocks so it's um it's a very flexible block you could say so historically widgets have always been a small component of the ui from all operating system platforms right the term which has been around a long time but in flutter it takes it to the next level and we'll learn more about that next week right moving on next question do you have a question scott uh let's see here there were a couple of them real quick uh i had to do i'll let you have the key one i'll take the one that is late versus final so again from the same string const you set it before you compile final you set it when you create the object late has to do with the fact that your variables have to be nullable or non-nullable if it is nullable then you don't have to instantiate it if it is not nullable then the compiler is going to expect that you instantiate it when you create it when you call the constructor but maybe you have another function you have to call in order to be able to set the value of that that's when you use late so the constructor is called a non-nullable widget is declared the compiler goes hey there's no value here oh wait a minute it's marked late so we'll go run this other function and then get the value for it and what's that actually do [Laughter] he blew my mind when he wrote that i'm like okay stop because i was watching him code okay if people don't know simon is the flutter whisperer we aren't kidding he knows everything about flutter but i'm sitting here and i'm watching him code and he did that and i'm like stop what is that and what are you doing so funny story come on come on this one questions questions no no no no he knows what i'm gonna say here i have no idea funny story nash came up with the name the flutter whisperer and simon said that if he ever mentioned it in public he was going to kill nash that's one of those nicknames that somebody else slapped on him that he didn't particularly want but now it's tattooed on his forehead so i've also seen it referenced in other written materials where the assignment in parentheses the flutter whisperer right just moving up right next question thanks somebody did ask about uh uh when to use keys when to use key so that that was the other one that was gonna pass to you i'm gonna actually quickly mention something about this because you don't have to use a key on any widget full stop that's the first thing however there's one exception to that rule and that is if you have widgets that are the same type that are siblings that is let's say you have a list or a row and it contains the same widget normally you want to put key on them and that way when the ui rebuilds and you remove a widget it doesn't confuse them but in essence i wouldn't have to worry about uh putting keys on any of the widgets most practical purposes don't require it there are some instances where you want to access the state of a widget in which case you want to use a global key other than that um what you're probably looking at is what's called a value key or just using the key constructor creates a value key and that would just provide an extra label to your widget um those can be used in several situations um primarily for your app running not not really required but testing is a great great use of of using keys so that allows you to find a specific widget and then you can perform some action on it so verify the button works or the color changed right or whatever it might be that you're you're doing your ui anyone else just make sure you use testing right yeah i'm asking you the while i'm writing some tests sorry for interrupting no it's okay uh simon mentioned having you know siblings that are are right next to each other flutter will have a hard time knowing if it has a list of of children in a column or list view for example and from one frame to the next stuff changes in the list it'll have a hard time knowing did the values within these change or did something get removed or did something get inserted like it just can't no it's ambiguous from flutter's perspective and keys are what disambiguate that maybe you put the id of each record from the database and the key can be anything as long as it's unique and then when you start moving around your ui maybe you have swipeable dismissible items in the list flutter will always know what's going on there's also warnings in those widgets if you don't provide a key it will tell you you need to provide a key for you to use this widget so um one thing you'll see in sorry go ahead one thing you'll see in the projects that go with the flutter apprentice at the root level you're going to see an analysis oh man my brain just spried it's a yamapa analysis option anyway so anyway it's there and so as you're working through you'll get warnings so we put that in there to help you write better code so that's what's sending you the warnings just to give you a heads up because there's a great package i think that the app's using that's called flutter lintz and that's a new package which takes place of the original predicate uh not pretty good um sorry pedantic package and uh flutter lynch is the official one now yeah there's now the official one and that will give you by default warnings like about the const when you're not might not be doing things right if you're missing something uh so yeah anyway um let's let's see what the questions we've got in the chat and this one i need to change the name of that package to nag [Laughter] can flutter really build great great apps as native language java and kotlin uh yes if we would be um i mean so so we've seen this a lot like it's kind of interesting that there's certain things you try and do with a native ui and to do it you have to do a lot of code animations re-nesting children moving widgets around the screen it ends up being really complicated and that's where flutter really comes into its own that you can do all this kind of stuff and still have the native feel look and feel of your original app and the performance you're gonna get and there's no other cross-platform product that i've seen i've tried quite a few of them that actually gives you the native look and feel and the um performance aspect of it as well so you know it's quite unique amongst its peers one thing that you know we can bring out now that is not you know for for those of you that are here that are beginners is you don't need to worry about this at all but there are certain parts of the flutter infrastructure that behave on an android like an android would behave on iphone like ios would there's other ones like that slider that we saw that you know it's it's a fair amount of difference between how android works and ios works and they give you the ability to actually i mean if for some reason you want to run the ios version on android you can if you want to run the android on the ios you can or or you can say or or you know it's just called dot adaptive and what that what that means it means that if i'm on an ios i'm going to do it the ios way and if i'm on android i'm going to do the android way so so when you start out you don't need to worry about that at all but when you if you do want to talk about native feeling functionality there there are some things like like how like like when you pull down on a list how that behaves just magically works android for android and ios way for ios and then other things you can kind of pick and do it the material way or or you do the ios way or you can actually say well pick the appropriate one depending on what it is should we find some more questions from the chat let's see here oh no no no let me let me follow this one up let me let me follow this one up uh i see a question i want to answer about grooming chip i love it so let's pass to sarah shortly but um whoever asked the state management question that is a great question and uh there are chapters on that coming up in the book it's a really big question though and hard to get to right now it's one of those questions that you hear over and over and over yes i think that we have 10 minutes left in the stream and it's we could do a whole episode about that we could do a whole series about it so we're just gonna defer it for uh later chapters and uh move on to some some simpler ones uh i saw someone ask would you see any potential issue for a banking app to use flutter and this is a diamond can answer that one question i happen to know some people that might be doing that what's the name of that bank in was it there's one in india and there's one in indonesia right no it's brazil it has new bank and then uh simon what are you working on there's one in india don't correct me if i'm wrong oh one thing to bring in to bring also because i mean you're talking security and things like that toyota is using flutter for their in their cards the reasons why flutter is actually chosen by banks um it is being chosen by banks and other companies is because of the nature of what it does and as it compares to machine code and you you only get that when you're writing cnc plus plus code for both for ios and android so the end result is some binary numbers so i won't go into the details but some binary numbers and it's really hard to work out what it does it ends up being like a black box no it's really hard to reverse engineer when if you're building sort of swift or java apps it's easier to reverse engineer out what the app is doing which is a security problem and for banks that's a very big deal so one of the reasons why flutter is quite interesting for them is that they get to have their cake and eat it as it were they can get to have this the nice ui and everything else without doing spending lots of time doing it and they get to to build into a black box and then there's advantages like things like ffi which bring the ability to bring in their own encryption libraries and other things that that that perform their security that is required for banking ffi allows flutter to communicate with the c plus plus layer underneath yeah um an interesting one here that allows us to touch on material design and uh just in general but how basically how can you do this the ios and android way and the short version is the android interfaces are created according to what's called material design it tells you about how big the area you touch has to be what size different things are what colors they are it helps for color blindness it helps you choose color palettes all kinds of different things that allow there to be enough space in between components for it to be easy on the eyes and easy to use now there is the material design spec that android uses there's also the human interface guidelines that's what apple came up with and an interesting story is i once asked one of craig's predecessors how is it that google can create these apps that look exactly like apples without getting sued and you know what he said legal won't let us answer legal questions but no the the truth of it really is that apple published the human interface guidelines which is the shapes the colors the shadows everything and then they said if you're going to make an ios app please adhere to these guidelines and google said okay and that's why it looks exactly like an ios app but again i'll point out the fact that it's uh there's a certain level flutter takes care of it flutter's responsible for making the big things feel right for the different ones but then there are certain widgets where it's you know there isn't there is definitely an ios way to do it and you can choose to whether you want to do that or not either with an adaptive widget or or some other thing like that okay i just want to put this banner up there while we're closing out we've got about five or ten minutes left so let's see other questions um i actually do see a few few other little things that we could uh go through i've lost the question hello could tick-tock be built in flutter yes could it oh yeah isn't it no that's wechat that's getting ported to flutter tencent wechat is being changed over to flutter so don't tell me flutter is not ready for the big time between toyota wechat ubuntu simon yeah also sorry for interrupting but also in amazon and bmw now they have some openings for flutter developers and inside they are having some projects that they are building with flutter they already have 300 flutter developers don't they i think they're the single biggest water shop in the world yes who also smell is also looking for flutter developers too yeah and that that is bavarian motor works right um is there a future for flutter 3d widgets build one so the people in the community are actually doing 3d with flutter and and working on this and and it is definitely possible to do 3d and flutter it's pseudo 3d so it's 2d print it's 3d projected into 2d but uh you'll notice that's kind of what 3d always is it always is right you end up with a picture on the screen which is 2d right but um yeah no i think we might be seeing something in the future but at the moment there's no official 3d widgets in flutter yeah the um the way a 3d game gets flattened onto your 2d monitor is it a bunch of linear algebra math it's very painful is done and you know this 3d world in memory in the 3d game or whatever it is is yes rendered as a 2d image and that linear algebra is available to you you can have kind of simple 3d effects very easily by using what's called the transform widget and you can use that to skew things and create little simple 3d effects but just like simon is saying i mean if you really wanted a rich entirely 3d app you'd be using those transform effects all the time managing yourself and that's what a 3d engine does so there's an interesting question i've never seen before and i'm curious because if i understand it correctly android auto is just slinging what's on the device to the screen is it not yeah it says flutter apps so sorry it's just android apps so um yeah um anything you have that would work on it's the same as like i have flutter apps working on um one of these the the android smart watches and anything that you can build in in android you can you can do with flutter since we're almost out of time i just want to mention that there have been a lot of really good questions going by in the chat and we just we don't have time so please use those resources that we mentioned earlier to go out and ask ask the questions in the flutter community slack and reddit stack overflow you can do it on twitter with the flutter apprentice maybe someone will answer no promises but uh yeah there's uh there's a lot of great places you can get your questions answered we we try and answer what we can but it's and there's always another way to get us to answer your questions show up next week yeah yes yeah come back exactly do the reading first and get more out of it and i think i think we need to come you know most of us are going to be here all the time but i i think we need to to go ahead and send another thanks out to mike for showing up yes and uh yeah the author of the chapters for today's so thank you very much thank you my pleasure and thank you to everyone who's checking out the book and giving us such wonderful comments and feedback just to set the expectation the author of the next few chapters is on the other side of the planet so this is sleep time for him i'm trying to get him to at least come to the beginning of it um but people need their sleep so we'll see if vincent's able to join us yeah yeah all righty but thank you again yes yeah exactly thank you mike again it's almost more than two hours for you thank you so with that let's all wave and i will see you next week can't wait to see you next week read chapters three and four three if you haven't already and uh learn about widgets and we'll all be friends do patreon do the flutter community with the spot out there we've got to have that too okay everybody watch this [Music] you
Info
Channel: Flutter Community
Views: 13,897
Rating: undefined out of 5
Keywords:
Id: FFZkjw1PVrY
Channel Id: undefined
Length: 118min 14sec (7094 seconds)
Published: Wed Oct 13 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.