A Web Developer’s Perspective on Flutter
In case you haven’t heard about it yet, Flutter is a cross-platform development platform from Google. Yes, the company we all know for it’s search engine, maps, and email also creates tools for developers. Flutter aims to make it simple to develop for any devices with one single codebase. What does this mean specifically? With Flutter, a programmer can create a software program that will run on both Android and Apple phones and tablets. The same program could even be accessible from the web as a website. Flutter is naming their approach “ambient computing.”
At Bridge Web Dev, we started looking at Flutter in March 2019 as we prepared to develop a few mobile apps. We were excited by the opportunities it could unlock but the big question was, would the Flutter live up to the hype?
The Flutter community is great! 😀
The Flutter team realizes that they are late-comers to mobile app development, and other cross-platform technologies are already available. I remember looking into PhoneGap several years ago, but it didn’t seem particularly stable. A few years later, I did a few tests with Sencha and built some prototype functionality. Among the big players, Microsoft was first to provide a cross-platform development platform, which it based on its .NET suite of tools; Xamarin came out in 2001. Facebook released React Native in 2015 and it has grown to be the most widely-used cross-platform mobile app development framework currently in use. Since it will probably be a hard-sell to try to convert developers that are already proficient with other tools, I have the impression that the Flutter team is especially careful to address the pain points of new mobile app developers.
The Flutter website has clear documentation, starting with how to install the platform and then leading into plenty of demos to get a feel for the language. Since Flutter is open source, the documentation can be extensive and you can even look at the source code to review how a particular function is implemented.
Learning both the Dart language and the Flutter framework was a little daunting at first, but the Flutter team has co-created a course with the London App Brewery that is aptly titled “The Complete Flutter Development Bootcamp Using Dart”. I can’t recommend this course enough; it really helped us to get up to speed with Flutter development.
They even have a series called the Boring Show! 🙂
There are also tutorials on how different parts of the framework function; these videos tend to be more technical in nature and some of them are still over my head, but I’m confident that I’ll understand them more as I become more familiar with the framework.
Flutter is still an early stage technology, but it’s mature enough to build real-world apps
IMHO, Flutter is still an early stage technology. The first stable version, v1.0, was only released in December 2018, a little over a year ago. Version 1.12 was released in December 2019 and the platform is still undergoing tweaks as it continues to mature. I’m unsure when version 2 will be released, but I expect that it will feature more code evolution and maturity.
Nonetheless, Flutter is already a great development tool. We’ve been able to develop login screens, Google Maps integrations, connections with Firebase and MongoDB databases; all pretty standard stuff for a real-world mobile app.
Flutter may Throw you for a Loop with Android and iOS Compatibility
Flutter’s core technology is built to work with both Android and iOS devices, but you should plan time in your project to test and tweak the packages that implement specific device-related functionality. We programmed on Windows computers and tested for Android by using Android Studio’s emulator and by installing the app on physical devices. However, for iOS testing, it isn’t possible to run an iPhone in the emulator or to install onto an Apple device unless the code is running on an Apple computer. Once our core development was completed, we bought an Apple Mac Mini to complete the testing and spent about a week adjusting for Apple specific packages.
Flutter uses one language (Dart) for both logic and presentation
Flutter also integrates very easily with the Material Design library. As someone who is much more comfortable with programming than with design, the library is a lifesaver, as it allows me to create good looking mobile apps with standardized layouts.
It will be interesting to see how easy it is to separate presentation from logic to avoid spaghetti code with larger apps.
I’ll be sure to post updates as we continue to work with this innovative toolset.