 Hey everybody this is Brian. Welcome to the first Flutter tutorial. You'll note at the time of this recording Flutter is still in alpha and is an open source project. Now version 2 is coming very soon and I'm going to try to adhere to version 2 so that going forward this tutorial set remains relevant. So first off what is Flutter? Well it is a mobile app SDK that helps you build pretty beautiful applications very quickly. There is an actual really nice fact in here that you should read and get accustomed to is, you know, what is it? Who uses it? What's it for? Answer some general questions right now. It's really designed to make mobile programming not suck. If you've ever tried making a mobile program cross-platform you've had just a major headache. Who's it for? Developers of all walks of life but mainly people targeting mobile development. Flutter is built upon a language called Dart which is a new language which I believe somebody correct me if I'm wrong was actually developed by Google. Or at least had a lot of Google backing. Google depends on Dart to make very large apps. You can see that there. So this has a few distinctions from other mobile frameworks. You can build cross-platform and this hacker new article I'm not going to steal all their thunder. But what's really differently is you have, you know, OEM SDKs where you have native code that runs on a specific platform. For example, an Android app will not run on iOS. iOS will not run on Android. You have web views which are kind of like a, I want to say a hybrid where you have like Cordova, Ionic, et cetera, et cetera. Or you have a JavaScript application that communicates with a bridge which actually communicates with the hardware. Then you have what are called reactive views where you have JavaScript which communicates with a bridge. Same thing talks to the hardware. What's different about Flutter is the Flutter SDK is really the only SDK out there that doesn't really use a JavaScript bridge. And it's actually very quick, very easy. I want to say very expressive and I want to say easy to learn. I'm currently building my own Flutter project. So I thought it would be nice to do these tutorials as I go. As you can see, it's built a little different. You have your native code which widgets are rendered and you have platform channels which communicate with the hardware. There's no JavaScript layer here. We will have to learn Dart programming. So the first few set of tutorials out of this whole series will be nothing but Dart code. So if you are a veteran programmer, Dart is very quick and easy to learn. If you are a new programmer and this is your first language, don't worry. I'm going to step you through this, but we will move at a pretty quick pace. So if you need help, definitely go out to my website, go in contact and be sure to join the Voidrums Facebook group. There's 1,700 programmers out there who can help you. And I should note that the source code for this in all tutorials will be out on GitHub. There's a link to my GitHub repository out on Voidrums.com. Alright, so first thing we need to do with Flutter is actually install it. So we're going to select our operating system. I'm on Linux. I have Mac OS in Windows. And I got to say they're all just dead simple to install. The first thing we'll need to do is actually make sure we have the system requirements. If I have X number of space, am I running this platform? Do these commands actually work? Yes, they do on my case. So without further ado, we're going to get this. Make sure I don't already have it installed. I do not. But you can see I already have Android Studio installed. I'll be developing on Linux. However, you can develop on any platform you'd like. Just know that I will be targeting the Android projects. All of the programs that we write should also run on iOS. And I may actually do some iOS programs simply because I have a Mac and I like playing on it. But to start off with, you should already have Android Studio installed. And you should have the IntelliJ Community Edition IDE. Now when you go to IntelliJ, or I'm sorry JetBrains.com, and you go to download IntelliJ, there's a couple different versions. Ultimate Community. You want Community because it's free. I'm not deterring you from buying it. You can go ahead and spend money. But I will be using the free version that way people all over the globe without any money can follow these tutorials. Alright, so back to what we were doing here. First thing we need to do is actually grab the code. So we're going to just copy that, paste it in there. And if you have no idea what this is doing, we're using a program called Git, which will clone the source code or the repository from GitHub. And that's the actual link to where we're going. You can actually follow that link and go out and browse all the source code for Flutter. But right now we're just going to install it. And this will take just a moment to download. Once this is done, you're going to want to actually set your path. And it walks you through here step by step. Now notice this command is only a temporary workaround. You're going to want to follow the directions for your operating system to make it permanent. See what happens is if you just do this and nothing else, when you log off and log back in, it suddenly doesn't work. To test this, we're going to do Flutter Doctor. Not Fluster. Flutter Doctor. I have got this wicked cold and it is just messing with me. These cold meds are just making me really loopy. All right. So you notice the first thing Flutter Doctor is doing is downloading the Dart SDK. So if you're working with Dart, know that Dart is a language in itself. And while this is downloading, I'll just discuss Dart a little bit. Dart is a full blown language. It's not just for Flutter. You can actually use Dart to create web programs, mobile and a Dart VM or console server applications. My hope is that someday they will actually put like a, I want to say like a desktop GUI over this. Sort of like C++ is cute where you have, you know, buttons and list views and things like that for desktop applications. I think that would just be amazing. So let's check on this. As you can see, it's downloading the SDK. It's building the Flutter tools and downloading all the other little things that it needs to run. And at the very end, you get the scorecard. Now, if you don't have checkboxes next to everything, you're going to want to investigate what it's, you know, what's wrong. And most of the time, it'll tell you flat out what you need to do. That's what I love about Flutter Doctor. So if Flutter ever acts a little screwy and you think it's not working right, just run Flutter Doctor and see what it has to say. Generally, you're going to get an output like this. Flutter on whatever operating system. You have the Android tool chain on iOS. You'll see both the iOS with Xcode and Android. You have Android Studio with a specific version. Now, when I say specific, it should be newer than a certain version. And it tells you the Java OpenJDK runtime and the IDE. Now, notice how it says Flutter Plugin, Dart Plugin. You probably will not have those. And what we'll need to do is go into IntelliJ and go into Settings. And you may not have this window, especially if you just installed it. Close that. I'm just going to say New Project. That's not what I wanted, actually. Go to Settings. I was trying to bring this up. If you have just the generic, you know, you've never opened this before, you may see a different window. So get into Settings however you can. Go to Plugins. And if you don't already have Dart and Flutter in there, click on Browse Repositories. And you'll want to type in Flutter. Mine, there's no button, but you'll have a button here that says either Install or Update if you already have Flutter there. So go ahead and install it. You'll probably have to restart the IDE. And you'll know that it's fully working when you see it in here. And when you can say File, New Project. And there is a Flutter and or a Dart icon here. So to begin our applications, I will actually be working with Dart. Notice how the Dart SDK is actually inside of Flutter. So go ahead and set up the Dart plugin for your IDE. And don't worry about this Dartium. Honestly, I'm not really sure what Dartium is. I think it's like kind of a help binding. But we're just going to be working with the raw SDK at first to learn the Dart language and we'll be using console applications. And then when we get into more complex apps, we'll actually be switching over to Flutter. So what we have here is just a general generic hello world kind of thing. As you can see, there's a lot of folders. You have an idea folder. You have Android folder and iOS folder, a lib with main.dart. Main.dart is actually the, I should say the index or entrance file. Basically, you need the main function inside of main.dart to run your application. And we're going to go over all this stuff in future tutorials. So if this looks really crazy, don't worry about it. We're going to cover it. So to recap, you're going to want to download and install Flutter. You're going to want to get a little familiar with the Dart language page. We're going to actually be going over the language tour. Maybe if I can find it, cold medicine. We're going to go over this pretty in depth. We're not going to spend three weeks talking about what is a variable. We're going to step through it fairly quickly, but there's a lot of information to learn. And I think it's going to be fun. Whoops, I was dragging and dropping something there. All right, questions, comments, concerns, please be sure to join the Voidrums Facebook group and leave me a note out there and I'll talk to you guys later.