Smartphones have become commonplace, and the number of apps available to users has in turn gone up as well. New apps are constantly popping up, big and small, with millions or just a handful of downloads. The developers behind these apps have many different tools at their disposal. One of them is Flutter, which has become increasingly prominent in the last couple of years, and which we also work with at Applifting. It’s proven to be very useful in certain cases, and our developers enjoy using it. It is for this reason that we’ve decided to turn our experience with Flutter into this series of articles.
What is Flutter
Flutter is a framework developed by Google that allows you to create mobile apps for iOS, Android, and other platforms using a single source code. It is a cross-platform technology with which you can develop several apps at the same time. Compared to going native, it comes with a number of perks, such as speeding up the overall process of development; there are, however, also a couple of disadvantages too. We’ll talk all about that in a section called The pros and cons of Flutter.
The first mention of Flutter appeared in 2015, though it was only in December 2018 that the first stable release was out. Now, a few years later, we have Flutter 3.0, which compared to the previous releases is more stable, powerful, and packed with developer features. Originally, it was used to develop mobile apps only, but this has now been extended to web applications and macOS, Linux, and Windows apps.
The pros and cons of Flutter
Flutter isn’t the first attempt at making a tool for creating cross-platform apps. It is predated by Xamaric, Ionic, or React Native, to name a few. That being said, nowadays, Flutter is the most popular of those (based on how favored it is by developers).
How does it fare in comparison to Swift and Kotlin in terms native mobile app development for iOS and Android?
- Cross-platform—developing two apps with one source code. No need for two different technologies, which often means double the developers needed. It isn’t twice as effective, as one might think, but it does help save a lot of time.
- Speed—the way the code is developed is another aspect that saves time. Declarative programming significantly speeds up development, much like the hot reload function, which redraws the app’s screen every time the code is saved, thus doing away with the need of recompiling.
- Performance—which is comparable to native apps. You can add snappy animations of any complexity, and if you use Flutter correctly, you won’t be dealing with any unresponsive behavior.
- Customization—there is a vast array of easy-to-use premade components. Flutter’s intuitive approach to combining components allows you to tailor your app to any design, no matter how complex it is.
- Documentation—the technology is open source, therefore everyone is free to look at the source code. What’s more, all the parts are well documented and detailed, so you won’t run into any trouble there. The few errors there are in the code all come with clearly described ways of fixing them.
- Community—with an increase in use and popularity, Flutter comes with an ever-growing number of new libraries, improvements, and tutorials.
- Size—the final size of apps is larger. Downloading, installing, and updating takes a longer time, and the apps take up more space in users’ phones. Compared to native apps, we’re talking about a 20% increase in size.
- Specific requirements—accessing certain hardware functions on mobile devices is more complicated than it is with native development. In some cases, you need to implement things twice, both in terms of the technology as well as the system Flutter is running on. This is where the main advantage of Flutter goes down the chute. In general, the more system functions the app utilizes (GPS access, Bluetooth, etc.), the less you benefit from how quick the development is.
- Flutter is new—it’s been just a few years since it’s been released, and it’s still a work in progress. As much as the community is growing, compared to native development, there simply aren’t that many tried-and-true best practices and libraries for developers to make use of just yet.