Flutter takes cross-platform application development to new heights.
At T4G, it’s our job to stay on top of the latest developments in the mobile space. In particular, we’re always looking for tools to deliver cross-platform mobile applications for our clients. By working from a single code base, we can deliver a more efficient and cost-effective way to create apps for iOS and Android. This provides enormous benefit to our enterprise customers.
A new tool called Flutter has arrived and we’re really, really excited. We’ve been playing with Flutter since the beta and although we love it, it’s not quite ready for enterprise scale projects – lack of Microsoft Azure integration being a key drawback. We do think it is a game changer that we’ll be paying close attention to for the foreseeable future.
If you haven’t heard of Flutter, we’ll give you a quick introduction and then highlight some of the features we’re most excited about.
What is Flutter?
Flutter is Google’s cross-platform mobile app SDK (Software Development Kit) for creating high quality native apps for iOS, Android, and more. It allows you to build beautiful interfaces tuned for high-performance.
Every aspect of it is entirely open – from the core to the API – so anyone can take a snapshot of the engine and modify it to fit their needs.
Flutter officially supports Android and iOS. As of this writing, the Flutter SDK has already been adapted to work on desktop operating systems including Windows, macOS and Linux. Google has also announced a brand-new engine for the Web called Hummingbird, which will provide the ability to write Progressive Web Apps in the near future using Flutter.
Flutter can run rich and beautiful animations thanks to its fast rendering engine. With tools like Flare, designers can now create vector animations that can be embedded directly into a Flutter app and manipulated with code. Flare eliminates the need to design in one app, animate in another, then convert all of that to device-specific assets and code, and they run really smooth!
On top of all that, Flutter is easily integrable with continuous integration (CI) tools. If you’re looking to go with open source, it can use GitHub + Travis + Coveralls. Want something more private? It’ll play well with Atlassian with JIRA, BitBucket and Pipelines or use CodeMagic from Nevercode, a new CI tool built specifically for Flutter. What about Microsoft DevOps tools? No problem. Use Azure DevOps, AppCenter and VSTS. It’s all easy because Flutter’s CLI is so powerful and easy to use that with a few scripts your app is up and running in no time!
What makes it different?
Flutter doesn’t use the native OEM UI components. Instead, it supplies their own set of components to build any type of UI using their own internal renderer (based on Skia). As a result, a Flutter app can look and run exactly the same regardless of the platform. The UI behaviour is completely predictable which makes UI testing a lot easier and more reliable. However, it’s also capable of creating totally platform aware UIs and keep fully native look without sacrificing any performance or adding any extra code.
Flutter compiles the app for release in machine code directly, no need for a virtual machine or interpreter and runs directly on the device’s CPU and GPU. As a result, apps perform just like a native app at 60 frames per second and a sub-second launch time. That is blazing fast.
Five Reasons We Love Flutter
1. Red Hot Reload
If you’ve ever spent time developing a mobile application, you know that much of that time was spent waiting for your application to compile, only to find out the changes you’ve made don’t work. This is where Flutter shines. Hot Reload allows you to instantly rebuild your project, while maintaining the app’s state, in less than one second. This massively reduces development time increasing productivity. Don’t even get me started on Hot Restart.
2. Widgets, and Widgets, and Widgets – Oh My!
Flutter comes packed with an immense catalog of widgets. Widgets are the base components of a Flutter App and support the latest Material and Cupertino designs. This aspect of Flutter is hotly controversial. Not using native widgets has certain advantages, but there are trade-offs. If Flutter widgets are not continually updated, apps won’t keep pace with newer versions of iOS or Android. That said, we consider the positives of this new approach to outweigh the negatives.
3. Dart warms the heart
If you haven’t worked with Dart before, what are you waiting for? You’ll fall in love. We did. Object oriented and asynchronous by nature, Dart supports many programming paradigms with no need for any markup language. AOT or JIT compiling? No problem. Flutter’s got you covered.
4. Testing in Flutter gets an A+
Because it doesn’t depend on the Native OEM components, Flutter apps are totally predictable. This makes testing a breeze. Those troublesome differences in the various versions of the same OS don’t affect the app. For instance, some newer UI components need different implementations for Android 4.1, 4.4 and 5.1+. As a result, the behaviour can change and cause the same test to fail for one version but pass for others. Flutter also supports three key testing methods: Unit (business logic), Integration (automated UI tests), and Widget tests (combination of Unit and Integration). Widget tests are one of Flutter’s biggest advantages over other platforms, such as Xamarin. Flutter can accomplish this thanks to its Dart + Skia based approach.
5. “Packages” with a bow
Packages simply save you time. There is no need to build EVERYTHING from scratch. These packages provide common feature sets such as network requests, API integrations, and third-party SDK’s. There is a fast-growing community of Flutter developers creating packages for Flutter and Dart. By not creating everything from scratch we can focus our time on delivering features of the application that provide real business value.
How Does It Stack Up?
Now, as a premier Xamarin shop, we feel Xamarin is still the gold standard for enterprise cross-platform technology. Xamarin still has a broader selection of libraries/components, and much better support for Azure out of the box. However, this up-and-comer certainly presents a viable choice for developers and shops who are creating smaller-scale custom apps where pixel-perfect presentation and fluid animations are a must. As it matures, we’re confident Flutter will be a serious contender for the top spot in the coming years.