Hi my name is Zaiste and welcome to my Flutter in Practice video tutorial. In this course I'll be doing something less common: instead of teaching you concepts and ideas, we will together, step by step, build an actual application. Something « real » whatever that means as programming is so abstract.
My idea is to go with you through the whole process of developing a "real" application with all of the ups and downs. And the goal of this course is to make yet another email client. So what is Flutter.
Flutter is a framework for building mobile applications, created at Google. You can develop both Android and iOS mobile applications, which means that it is a so-called « cross-platform solution ». You develop it once with a single codebase written using a single programming language called Dart. Instead of using Swift for iOS and Java or Kotlin for Android.
And the result is a native application, either Android or iOS. Flutter compiles your code directly to the machine code. What’s important about Flutter is that you can, not only use a single programming language to target both of those platforms (iOS & Android), but you also have a unified development process, which means that you use a single set of tools, a single toolchain to work with both of these platforms.
Flutter abstracts the interaction with both Android & iOS while still producing native code. Simply put, you don’t need to learn different ways of writing mobile applications for different mobile platforms.This is similar to React Native, but Flutter’s advantage is that the framework, the programming language and the toolchain are developed by single company while still being open source.
This way Flutter is just easier and more pleasant to work with. There is less of rough edges and most of the pieces needed for development fit nicely. You don’t need to configure too much to get started or to be productive as you write your applications.
Dart is an interesting programming language. It's object oriented with inferred types, which means that you don't have to always specify type. The language or the compiler is able to guess the type based on the usage Dart reminds me of my early days working with Turbo Pascal and Delphi. There is no WOW effect here for sure. It seems boring, or maybe I should say conservative But there is something in it: Dart evolves each day - its development is very active.
I've chosen an email client as the goal for this course because I am very enthusiastic about JMAP: this new, modern standard for email clients. The client we are going to build will exclusively support JMAP protocol.
I will putting a lot of other technical ingredients to the mix to make this course as close to the actual software development experience as possible. The focus is on creating a mobile application using Flutter, but we will also do some backend programming. I will show you how to interact with a RESTful API and maybe even with a GraphQL endpoint. There will be also some database design.
This course is aimed for absolute beginners or people new to programming. I will be using simple English, trying to avoid any jargon as much as possible. I will be also trying to incorporate some funny analogies for clarity. Don't be surprised if it won't be always precise or correct. I hope more experienced people will excuse me for this kind of shortcuts.
Both Flutter and Dart are new to me. It is not impossible that I will explain some of those things incorrectly. On the flip side, I have been programming my whole life. I have a Computer Science degree. I specialised in AI primarily working in the field of natural language processing. I decided to record this course because of the excitement I had working with both Flutter and Dart.
This course is free. The code will be open source. On top of that, I hope I will be able to engage some of you to contribute to the project as well This way I will give a tiny glimpse of work needed to maintain and manage an open source project.
Any feedback at any point is appreciated. The content, the structure - it's all up to you. Let me know your thoughts, ideas, criticism as well. I hope you will enjoying watching this as much as I enjoy doing it.
Let's start the adventure.