Flutter/Dart App Development for Cheap Beginners
Tags: 100daysofcode, dart, flutter, beginners
Published: 2019-10-12 18:42:16

This is no expert advice in this post. I'm a beginner, myself, on day 4 of 100 days of code (though since it took me a few days to discover that tag it's really more like day 10). I have dabbled in code, mostly through web design, but nothing too serious. So, what I think I am qualified to do I think is give a pretty good overview of things that make sense to me as a beginner. 

If you're a complete beginner, too, you should know that Dart is a programming language, and Flutter is a system that allows us to use Dart to write apps that work on both Android and iOS devices, while adding a lot of other useful function, including a pretty intuitive way of doing responsive design. This is huge for me! I can't speak to what the benefits and concerns about this are on a more technical sense, but I know I was hesitating to learn app development partly because I was having trouble picking an operating system. Also, so far it's quite intuitive and, with my background, I'm pretty into the elements that draw a lot on web design concepts. 

I have a list of goals/fears related to developing apps. So far I've conquered three of them:

1. figuring out the Hardware and Software required to work on this
2. understanding and learning the basic syntax of Dart
3. compiling and running apps on actual devices

If you're a complete beginner, too, and would like to know how I got started, these are the tools I recommend most:

<b>Hardware:</b> A Mac is more versatile; there's no way (no easy way at least, I was a little unclear on the details of this) to compile code for iOS from a PC, while a Mac can create apps for both systems. This isn't entirely conclusive, but a pretty good metric for whether your Mac can do all this is whether it can run Mojave. I upgraded to a MacBook Pro from 2012 (the earliest model that theoretically can), and so far it's working, while my 2011 MacBook Air didn't. 

<a href="https://dartpad.dartlang.org/">Dart Pad</a> lets you experiment with Dart code online, before you deal with installation.

<a href="https://da-bootcamp.firebaseapp.com/?course=start_programming_dart">Dart Academy Bootcamp</a> is a fun way to try out some basic concepts and get automatic feedback on how your code is working. 

<a href="https://www.smartherd.com/dart-programming-for-flutter-beginners/">Smartherd's Dart Tutorial</a> is the most complete set of beginner tutorials I've found, with videos and also code to reference. I kind of wish I had started with this, because I prefer to understand the basics before getting thrown into projects that require them. Someone pointed out that this course doesn't cover asynchronous programming/future; here's <a href="https://dart.dev/codelabs/async-await">a short tutorial that does</a>. 


<a href="https://www.udemy.com/course/flutter-bootcamp-with-dart/">Angela Yu's Flutter course on Udemy</a> is a pretty good place to go next, (especially if Udemy is having one of their frequent $10 sales), or a decent place to start if you have programming experience or if you do like being thrown into things. Software instructions seem to get outdated pretty quickly and I had to do some things slightly differently than she described (had to install Xcode before some of the other steps would work, for one thing) but the walkthrough of this process was still incredibly helpful. After that, she jumps into creating actual apps using the Flutter framework. 

A couple of relevant things I learned the hard way: in order to run apps on an iPhone or iPad, you'll need to sign up for a free Apple developer account. Also, in Android Studio (the main piece of software) you might want to go into Preferences>Editor>General>Code Completion and turn on "show the documentation popup." This is used a lot in the course, but not fully explained.

There are some other Udemy Flutter courses, too, which focus on slightly different subjects and have equally high ratings. I was kind of disappointed to learn that there's usually very little chance of meaningful feedback despite claims to the contrary, but I guess you can't expect too much for $10. 

For further questions, <a href="https://livebook.manning.com/book/dart-in-action/table-of-contents/">Dart in Action</a> and <a href="https://livebook.manning.com/book/flutter-in-action/welcome/v-9/">Flutter in Action</a> seem like great online resources. And, of course, <a href="https://google.com/">Google</a>. Most of my questions, especially about actual code, have already been answered on Stack Overflow or explained in the documentation. 

For 100daysofCode purposes, here's the uncompleted portion of my fears/goals list:

4. Lambda functions, I still don't understand them
5. GIT/collaboration
6. Databases
7. API stuff (addressed at least somewhat in later parts of the Udemy course)
8. writing and running tests
9. Publishing

Over the next 90 days or so, I hope to discover and share more resources as I learn about these subjects.