what is flutter ?
Flutter is a mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time.
It is developed by Google and is a fully open source.
Understanding why Flutter involves understanding who it is intended for, as well as the history of development in the various user domains.
Who is Flutter for
Developers looking to build highly-performant User Interfaces.
Web Application Developers looking to get into the mobile application development space without the overhead of learning various Native Platform Languages.
Companies looking to reach more users with a single investment.
Designers looking to have their app designs delivered consistently with their vision.
>Native Application development has always had distinct differences from Cross-Platform Development providing various advantages and disadvantages.
>The appeal for Cross-Platform application is very profound. It is nonetheless an ever-changing scene growing to eventually fill the shoes of the native application development space. Mobile development, as it is in general, is also relatively young (less than a decade old)
>This article goes into great detail to explain the history of the view technologies used in mobile development.
>The first cross-platform frameworks used Web technologies and rendered to Web Views
>Before Apple released their iOS SDK, they encouraged third-party developers to build web-apps for the iPhone, so building cross-platform apps using web technologies was an obvious step.
>Reactive Programming is a programming paradigm that emphasises asynchronous data flow with streams of data from events. It has become increasingly employed in User Interface development with respect to animation and other rendering requirements.
>Reactive web frameworks like ReactJS use reactive programming techniques to simplify the creation of web views.
>Technologies categorisation according to Compilation mechanisms and View Types
>For example: Debugging React Native apps in chrome means the application is running in two different realms (Desktop and Mobile). These realms are bridged over a WebSocket.
>Optimisations in React Native try to keep the passes across the Bridge during the application runtime to the bare minimum. Ultimately, each of the different environments can be fast but the delay arises in exchanges across the Bridge.
Flutter counters this problem with its reliance on Dart which is AOT-compiled. This means there is no need for the application to use a bridge during runtime because the application is compiled to native code.
>A widget is an element that controls and affects the View and Interface to an app. Everything that you build in Flutter is a widget. This makes it much more self contained, reusable and extensible.
Dart is used by the Flutter team for several reasons:
Dart is Ahead-Of-Time compiled. The Dart VM supports building of native ARM code for the platforms you are developing for. The implication is that the applications are much faster in comparison to those which use Just-In-Time compilers, which compile on-the-fly at program execution.
Dart also offers Just In Time compilation. Flutter leverages this ability in development to make for faster development cycles. Features like Hot Reload are made possible because the application can easily compile the updates, making it easier to test and iterate over a product.
- Strongly typed
Dart is strongly typed. If you have used Java and C#, transitioning to Dart can be ideal for several reasons, one of which is, given the familiarity and type safety that Dart offers, you don’t have to sacrifice on your programmatic completeness.
- Server-side Curiosity
Dart is a great fit for a lot of things, including running on the server. Server side Dart is a growing interest for many and It makes for a great case to use it in Flutter considering the possibility of a unified codebase
Use in Fuchsia. Fuchsia is a new open source operating system currently being developed by Google that is also garnering some attention in tech enthusiast spaces. Unlike Android and other popular operating systems, It is based on a new microkernel called “Zircon”. Flutter has already been used with Armadillo to test development of user interfaces for Fuchsia.
The observed shortcomings are based on other developer experiences in the past. This section only serves to highlight where the Flutter project has been and what it is solving for. A testament to the development velocity of the Flutter team.
You can review this article to review the challenges a native mobile developer faced when test driving Flutter. Some of the issues they highlight are very much in contention on my part, as the lack of OpenGL support, granted Flutter uses Skia, which supports OpenGL as one of its backends. Other possible challenges you might face right now as a result of Flutter as a result of Flutter being in very early stages include:
- Low-level implementation of animations. This has created challenges in the past for some people with a need to go a bit low level to achieve the desired animations.
- Data manipulation libraries still short. Flutter has focused on Visual Rendering initially. If you are someone with a strong reliance on ready-made community modules and widgets for your implementation, you might struggle with the scarce data manipulation libraries. I personally feel, however, that this field is maturing steadily, with Flutter offering more recommendations regarding architecting your application and paving way for people building libraries to align their products with the best conventions.