Why Am I a Flutter Programmer? Introducing Flutter Language
Many frameworks have been introduced with the slogans such as “Multi-Platform” and “Write once and get multiple outputs” in recent years. Having spent many years building Android applications using Java, I was looking for a good solution for faster development with good performance. Still, every time I used these types of frameworks (like React Native or Xamarin, etc.), the only achievement was more disappointment.
The Darkest Hour Is Just before the Dawn
Just when I had lost my hope in all these frameworks, I was repeatedly told about flutter language and that it is an absolute masterpiece. But when I asked people about their portfolio, I realized that they had just searched or heard from others. No one had tried it. However, I had the same experience with React Native; then, I couldn’t believe this new data.
But once in my spare time, I decided to try flutter. Having heard the filter’s power in implementing the user interface, I implemented the most complex and beautiful design I found in Dribble with the filter. Interestingly the result was incredible. It was as if I had found my lost half after years!!!
Everyone who has experience in mobile programming (IOS and Android), seeing the above design, will realize how difficult and challenging it is to implement such a project. But it is interesting to know that learning and implementing this plan took me only two days!
After this project, I realized that flutter is entirely different from the previous famous frameworks and creates a revolution in mobile and web applications and even desktops. So I started doing more and more in-depth research to see how it worked.
I was researching when I received an exciting job offer from one of the famous software companies. After hiring, I offered the technical manager to use flutter language, which was fortunately welcomed. Interestingly, using this programming language, we designed and implemented a large project in just three weeks. This project was a massive challenge for me, but it was a launching pad anyway.
What is Flutter Language?
Flutter is a popular framework for developing mobile, web and desktop applications, the first version of which was released by Google in 2017. If you read the first page of the flutter documentation, you will notice that Google has introduced flutter as a Ui Toolkit.
Flutter as a tool for UI development
Flutter does not convert your UI implementation code to native platform code, unlike other popular mobile application development frameworks. Instead, the creators of flutter implemented all the components of the user interface from zero to one hundred, which are rendered directly by a 2D graphics engine called Skia. But other parts of the application, such as APIs platforms (like Bluetooth, camera or file manager), are fully implemented with native infrastructure. For this reason, Google introduces flutter as a Ui framework.
In my experience, the rendering speed of complex user interfaces and animations is even faster than React Native on Android. This is because many rendering operations are performed by the GPU and the Skia graphics engine.
What is Skia?
Skia is a 2D Open Source Library that runs on a variety of platforms. Skia works like a Graphics Engine. It is interesting to know that applications such as Google Chrome, Firefox, Android, Flutter, Chrome, and many other platforms use Skia to run animations and rendering.
What is the Dart Language?
Dart is a fast Garbage Collection compiler object-oriented language with a C-like writing style.
Dart language has unique capabilities that were quite attractive to me. For example, it can be compiled in two ways: JIT (JUST IN TIME) and AOT (Ahead Of Time) directly in machine language!
JIT: means Just-in-time. You may use this compiler when developing and testing apps. It works by building a virtual machine that compiles code into machine language at runtime.
One of the capabilities of JIT is that it makes changes to the project along with saving code. You can also easily debug. However, JIT software execution speed is much slower than AOT due to compile runtime. For this reason, it is just suitable for the software development and testing phase.
AOT: Use this type of compilation which means Ahead-of-Time when your software development and testing phase is complete, just before publishing your application or backend code. This compiler reviews all your code and then converts it directly to machine code in one step. Consequently, after compiling by the AOT method, starting and running your software will be dramatically rapid.
Flutter Language Learning Steps:
To learn flutter, you may follow these steps:
- Computer basics: concepts such as how the compiler works and is used, or even more superficial topics such as operating system function, CPU, memory, etc.
- Principles of Objectivism
- Dart language
- Learning how the flutter framework works
- Concepts of State Management and Widget
- Gaining expertise in various flutter frameworks such as software architectures, state management, plugins, etc.
Why Google Choose Dart & Not Any Other Language?
To answer this question, let’s discuss the advantages of Dart language.
Major Advantages of Dart Language
- Hot Reload feature that significantly increases software development speed.
- Easy to learn for beginners
- Designed, developed and supported by Google and various communities due to being open source
- Null safety
- Fast and powerful Object Allocation and Garbage Collection. (one of the issues with the Java language is its slow Garbage Collection, which would lower the frame rate in Android applications and is followed by probable lags in performance.)
Flutter vs. Native; Which One Is Better?
I think this question is fundamentally wrong; why? Because flutter is entirely native! Anything you write in Dart directly turns into machine code. On the other hand, connected items to APIs, such as Camera or Bluetooth, must have a plugin that, based on the platform on which it is run, interacts with the native codes of that platform.
The native language in the Android operating system is Java or Kotlin, and in iOS, Swift or Objective c.
Does Flutter Provide Better Performance Compare to Native?
The flutter rendering speed of page elements, effects and animations is much higher than native (I explained the reason above). Of course, the performance of other parts of the application, such as platform APIs (for example, camera or file manager), is no different because native code actually performs this type of operation behind the scenes.
Answering Some Questions about Flutter Language:
Will Flutter Replace Native Languages?
Never! Many people think that by learning flutter, they no longer need the native languages. However, it’s not true. For example, Android developers still need their Java or Kathleen skills to add the feature of downloading files to the app. In this case, developers need several APIs for Android or iOS platforms, which need native languages.
Do You Need Native Languages to Make an App with Flutter?
Most small to medium-sized projects do not require native languages (such as Java, Kathleen, Swift, and Objective c). On the other hand, many plugins are available on the Internet that reduce the need for native code. So knowing native languages is not necessary, but an advantage.
How Long Does It Take to Learn the Dart Language?
How Long Does It Take to Become a Flutter Programmer?
If you have smartphone programming experiences or have some experience in working with web frameworks like React Js, Vue Js, Angular, it takes 1 to 3 months to become a flutter programmer.
Does Flutter Have a Good Future?
Regarding its active and extensive community, the development of flutter is incredibly fast. On the other hand, considering the good technical infrastructure and Google Support, a large part of the future of mobile and web programming and even desktop apps belongs to this lovely framework.
Can We Create a Site Using Flutter?
Yes. You can see examples of websites made with flutter in this link. However, it does not seem to be a good choice for building a site at the moment. Flutter still has various performance issues and does not support SSR (Server Side Rendering) – that is a major drawback for websites that care about SEO.