Last week at Mobile World Congress 2018 in Barcelona, Google announced the official beta release of it’s Flutter app development framework. A number of developers have already started using it to build and publish apps that are hitting top spot in the Apple App Store and Google Play. There’s been a buzz in the office recently around the new framework, what it’s benefits are and what it means in terms of future mobile app development.
What is Flutter?
The objective of Flutter is to give developers a
* way to create native mobile apps and it focuses particularly on the app user interfaces which can take more time to create on individual iOS and Android app toolkits. The framework is an open source mobile app SDK including a framework, widgets, and tools that allow developers to build and deploy mobile apps on both Android and iOS. It does not use iOS/Android UI components but still draws everything natively using its own rendering engine.
Google has ensured that Flutter is designed for use by both new and experienced developers. It integrates with popular development tools so developers can continue using the editor or integrated development environment they are used to using.
If you want a quick overview, check out the Google Developers video below that was published last week.
What are the some of the main benefits of Flutter?
- The framework supports cross-platform development in a single codebase that is compiled to native code.
- Implements a stateful hot reload developer cycle that allows for sub-second reload times while retaining the app state.
- Integrates with development tools such as IntelliJ Idea, Android Studio and Xcode.
- Includes a rich set of widgets for Android and iOS that are designed to be highly extensible and customisable.
- It has integrated support for platform conventions such as scrolling, navigation, fonts, icons.
- Support for accessing platform API’s and services, including integrating with Java code on Android and Objective-C or Swift code on iOS, as well as 3rd-party SDKs
A large number of platform and 3rd-party APIs (including
SQLite, Firebase, Facebook Connect, shared preferences, GraphQL)
have existing packages available in the Pub repository which will grow further depending on the adoption of Flutter in the future.
- Flutter uses Dart, an object oriented language that is designed for high developer productivity as well as high, predictable performance.
- React style customisable, optional framework.
- It supports APIs for unit and integration tests
What are the main issues/ constraints?
The framework is still in development, currently in beta release phase. Google is currently planning on releasing new Flutter Beta versions every four weeks so developers will have a chance to test it and identify potential issues that can be resolved in the next release. It has also
not been tested on tablets and there are no tablet specific adaptations of widgets as of yet.
In order to implement different layouts for
iOS and Android, developers have to check the mobile OS at runtime, as opposed to Xamarin native Android/iOS where there are separate UI layers for the two platforms. While there exists support for native conventions and customisable widgets that are styled for Android/iOS, Flutter appears to be designed to create a single UI providing a mostly uniform experience across the platforms, rather than distinct UI for each platform.
There is also currently no dependency injection solution. We currently rely on frameworks such as Dagger 2 in native and Ninject for Xamarin for dependency injection.
While there is support (via platform channels and plugin packages) for accessing platform and 3rd-party APIs
it does not appear to be as straightforward as using
Xamarin bindings which wrap nearly the entire underlying platform SDKs in both iOS and Android and have proven to be fairly easy to use for 3rd-party SDKs.
Future of Flutter
Despite the "beta" tag, Google is already using Flutter in production for several apps, most notably for AdWords, Google's advertising platform. Google insists there are already hundreds of Flutter apps out there but the most popular app appears to be Hamilton: The Musical. The projects app development team described their thinking behind using Flutter to build the app:
"We decided to use Flutter, a new modern, reactive UI toolkit that is portable across iOS and Android. Flutter allows us to have a less complicated codebase, which means we can be more efficient and keep parity between platforms"
In general, we definitely think Flutter is worth keeping an eye on when it comes to cross-platform development. I think we will slowly begin to see more widespread use of the framework across the board and it will be interesting to see what comes to light during the Beta phase.
However both Flutter and the ecosystem build around it will have to mature more and be adopted more widely in order for us to consider it for production apps. It will be interesting to see what this means for future mobile application development.
The team at xDesign will be trying testing out the framework as it continues to evolve in the future. We'll keep you updated with out thoughts!
In Android, you can check out the Flutter gallery here .
_By Myrto Avgeri _
<!-- [if lte IE 8]>