Top 4 Why Flutter is the BEST 🙌
Tags: flutter, flutterdev, dart, firstpost
Published: 2021-04-20 13:51:40



##Table of Contents
- Why Flutter? 🙌
- Drawbacks 😥
- Dart Basics 🐣


#Why is Flutter the Be(a)st?
##1 High Development Efficiency
Flutter is the cross-platform framework; single codebase for both iOS & Android apps. (and Web with the Flutter v2.0 released on Mar 3, 2021).
Thus, it really saved a LOT of my time working on the UI and let me focus more on the core functionality of the app. Or, I could ship the app to the market quickly to gather the user feedbacks and iterated on it.

Spend more time on the core functionalities! Or Ship it FAST!

##2 Development Speed
Hot Reload : Through one-click or save the file, you can see your UI changes in the simulator or device in 1 second. Basically, Flutter injects the updated source code files into the "running" Dart Virtual Machine.
No need to full-recompile the application to see your UI changes!
Hot Reload example

##3 Beautiful Inside & Outside - Performance & UI
Flutter apps are compiled directly to machine code, whether Intel x64 or ARM instructions. (or to JavaScript if targeting the web) And, they are packaged in the exactly same way as native applications.
Note1: The Flutter engine provides high rendering performance using Skia graphic engine.
Note2: If you want the Deep Dive, I recommend you to take a look at this: Flutter Architectural Overview - Flutter Official Site
1. In summary, not all cross-platform apps are slow. What's more than that, Flutter apps have higher performance than Swift apps.
2. Objective C and Flutter will be a wise choice if you want to develop a super-fast iOS app.
3. For the apps with high load calculations Flutter is a good option for both, Android and iOS app development.
from Flutter vs Native vs React-Native: Examining performance article
Also, Flutter provides the two major UI styles: Material (Google) & Cupertino (iOS). Depending on your app, you can apply the look and feel as you want.
Material design on the Left; Cupertino design on the Right

##4 HUGE Communities & Documentations
One thing I really love about Flutter is how big and well-designed communities are. Flutter has YouTube, Discord, Reddit, Medium, its own official website, and more.
Community

Welcome to the Flutter community flutter.dev
For the UI or visual materials, I would watch a quick tutorial on YouTube rather than reading through the article. Also, if you subscribe the Flutter YouTube channel, they are frequently posting a new videos about a new UI widget as well as a tips&tricks (average one once a week).

For the architectural or functional materials, I would read the well-organized Flutter documentations or search it on StackOverflow or Reddit (which developer doesn't use it?)

---


#What are the Drawbacks? 😥
##1 Dart
For cross-platform mobile development, I still see many people tends to choose React Native over Flutter because their background might be web or they are more familiar with Javascript. I understand that learning a new language might be time and effort consuming at the beginning.

Learning a new stuff might be boring and toughHowever, with my 7 years of software development, Dart is a pretty easy language to pick up if you know one or more other languages (e.g. C#, Python, Java or even Javascript).
##2 Missing Plugins
Let's face the reality here. Although there is a huge community and lots of new Flutter features are coming frequently, Flutter is still missing many essential Plugins/Packages.
BEFORE beginning your new project with Flutter, I highly recommend you to spend 10–20 minutes to research if the Flutter supports the functionalities you are looking for or there exists the Plugins/Packages.
If you are not rushing to publish the app, it is also a great opportunity to start your Open Source contributions. Sharing is Caring!

Sharing is Caring!For more about the positive & negative feedbacks on Flutter from dev:
Are you happy with Flutter? - Q4 2020 user survey results
The Flutter team at Google has been running a quarterly survey program to collect your feedback since 2018. medium.com

---

#DART Kick-Start 🦵
Now I will assume you know at least one language and point out some key features of the Dart to get you going. If you don't know any language, this might not be suitable for you.
##1 Main method
Every app must have a top-level main() function, which serves as the entry point to the app. The main() function returns void and has no parameter for arguments.
void main() {
  var helloWorld = 'Hello, World!';
  print(helloWorld);
}
👇👇👇 Note: You can play Dart coding here without installing anything:
DartPad
You can play Dart here. NO INSTALLATION dartpad.dev
##2 Data Types:

Aside from that, there are var and dynamic types:
dynamic is a type underlying all Dart objects. You shouldn't need to explicitly use it in most cases.
var is a keyword, meaning "I don't care to notate what the type is here." Dart will replace the var keyword with the initializer type, or leaving it dynamic by default if there is no initializer.

If you try the below code 👇 in DartPad, you will see that `dynamicVarcan` change its type whereas `varVar` cannot.
```
void main() {
  dynamic dynamicVar = 'daewon;
  dynamicVar = 333;
  print(dynamicVar);
  var varVar = 'daewon';
  varVar = 333;
  print(varVar);
}
```
##3 Keywords
https://dart.dev/guides/language/language-tour#keywordsThese are all the keywords that Dart provides and you will notice lots of them are similar to the language you know. If you want to know more about each keyword, you can visit here to deep dive.

---
Conclusion
When I am comparing my experience with Flutter (2 years) to Xamarin (3 years), I can ship the code much faster with prettier UI and better performance. Moreover, Dart is easy language to pick up and there is a huge communities you can get help or participate!
Thus, I would want to say that Flutter is very strong platform and you should definitely consider as a top option when choosing for mobile development platforms.
If you want to connect with me: https://linktr.ee/dw2kim