Just stop whatever you are doing and take a 6-minute divine break to look at what treasure this article beholds.
Before we start, here is a cat meme to calm your minds.
Hi everyone, I am Dhruvam and I have been engrossed in Flutter since December 2018. And since then, I am in love with it. We will start with what we will cover in this article and share some opinions on that and then finally make an open-ended conclusion.
Before we begin, I would love for you to try my latest gaming application that implements parts of Flutter. Any feedback is appreciated. Open this link in your mobile, if possible and download the app.
Try it: Gamezop
In this article we will uncover some truth about:
- What is Flutter?
- How is it different from other cross-platform development frameworks?
- What difference a common user face from a native app?
- Recent Developments in Flutter announced in Google IO 19.
1. What is Flutter?
Flutter is Google’s portable UI toolkit for building beautiful, natively-compiled applications for mobile, web, and desktop from a single codebase.
If you haven’t heard about Flutter and have been living under a rock, I would suggest you check out this site: https://flutter.dev
2. How is it different from other cross-platform development frameworks?
Flutter has a tough competition ahead and this competition with other frameworks and Native Application Development will get tougher if Google doesn’t pull up the gear. Flutter has been doing really good amongst others.
Here are some points that I feel will help you find out the difference and see why Flutter has managed to keep its head up high.
- Ahead of Time Compilation: Flutter use Ahead of Time (AOT) Compilation that natively compiles the dart code to machine code. This helps in saving disk space, memory, battery life, and startup times.
- Stateful Hot Reload: This is the most exciting feature. Flutter uses JIT (Just in Time) Compilation and that helps in developing apps faster. As soon as you change the code and save it, you can see it in under 1 second. This is lightning fast and a game changer. It not only reduces the development time, but it also reduces the time-to-market and makes it suitable for everyone.
- Getting Started: Getting started with Flutter is way too easy and the documentation is really good. Creating your first application with Flutter is easier than with Android and iOs. It was way too easy and really boosted my confidence.
The list doesn’t end here, it’s a lot more. I have added an image down to see what are the major differences between Flutter and React Native.
3: What difference a common user face from a native app?
Enough has already been said why we should start adopting Flutter but there are some issues that is avoiding the complete mass adoption. Flutter has been able to deliver high quality and many big companies have started adopting in their mainstream applications.
But every coin has two sides. Flutter has too.
- Janky Animations: Flutter brings 60 fps animation but there has been issue with this. The animation is janky at the first time startup and then eases up. This leaves a bad impression.
- Application Size: The application size is much too high at the development time. For a simple application that displays a list, its size is as big as 45 MB. That is really huge for such a small and simple application.
- Unnecessary Widget Drawing: Widgets must be created with state in mind. Flutter’s stateful widgets have state attached to them. This means that functions cannot actually change the UI, it can only change the state data. So when the next redrawing happens, Flutter takes in the new state data and build the widgets.
If this is not kept in mind, your application can do unnecessary redrawing the widgets on to the screen and thus wasting app resources and making application janky.
- Slight Inconsistent UI: You can add some flutter code in your existing Android or iOS app and you can feel the difference between the UI. This can be one small point or a deal-breaker. If you feel you are not much concerned about consistent UI with both the iOS and the Android app, then its not a problem, otherwise it’s a deal breaker. It does not create much difference but there is some.
4. Recent Developments in Flutter announced in Google IO 19
Google IO 19 just happened and Google revealed numerous announcements.
Google just announced that beside taking iOS and Android under its wing, it has started taking Web and Desktop and Embedded too.
Google also said that they have already started using Flutter in Google Home Hub internally. This has been one hell of an announcement. Earlier Cross-Platform meant Android and iOS. This changed the whole world around.
With Declarative UI pattern, Flutter has changed the game. Even Apple announced Swift UI that uses the same pattern, Declarative UI.
Why this mass adoption? This is because Declarive UI pattern creates less number of files to manage, great code reusability.
5. Final Question: Will it replace Java for Android Development?
Drum roll please.
After all the Knowledge Transfer, here is my conclusion for the Flutter future for replacing Java for Android Development.
I would say, YES.
Java is an old language and Google has been trying to find a replacement for Java since the Sun/Java acquisition by Oracle. And in the process, they found Flutter. Though I said Flutter would replace Java for Android Development, I didn’t say it will replace Native Application Development for Android.
Kotlin is here to stay and it will be a really tough competition for both.
Kotlin with Android:
Kotlin is now a first-class language for Android Application Development and the recent announcement in Google IO 19 claimed that they will be releasing Declarative UI pattern for Kotlin with Jetpack. This is a huge step in favoring Kotlin and will further the Android App development in Kotlin.
I will be really brutal and be done with it.
A native application is always better than a Hybrid application in terms of performance and speed. But.
But there are trade-offs with both.
If native gives speed, Flutter reduces time to market and reduces code. It will always depend upon the use-case you are after.
If you’re a startup, I’d say go with Flutter that delivers performance and speed in no time. And make your customers happy. But if you’re multi-million company and has time, money and human resource to spend, go with Native. Again, it depends upon the use-case and resources.
Finally we’re done. Hurray!