In this post we will get to know what is flutter.
Flutter is an open-sourced mobile application Software Development Kit (SDK) created by Google to build beautiful Native Apps on iOS and Android from a single codebase. It uses Dart as programming language.
- Open Source: You can study, change and redistribute Flutter source code from Github. Make sure you comply with License before you choose to redistribute.
- SDK: Besides core library, it includes other contents like package management tools (Pub), shell, test supports, etc. to help in development.
- Native Apps: Unlike other Hybrid Apps that display UI components in Web View, Native Apps use platform specific engines and are tightly integrated to Operating System.
- Single Codebase: You write single code in Dart but builds App for different platforms.
There are other multiple options (React Native, Xamarin, etc.) similar to Flutter that you could use to develop Native Mobile Apps. This section describes what features Flutter provides and contrast between them.
1. Hot Reload
Any changes in your app code are Just-In-Time (JIT) compiled and injected to running app that will help to visualize changes without closing and re-running app again.
Debug mode builds use a virtual machine (VM) to run Dart code (hence the “debug” banner they show to remind people that they’re slightly slower) in order to enable stateful hot reload.Flutter Developer Documentation
2. Pre Built UI Elements
Flutter has ready to use UI elements (like input elements, date picker, etc.) that you can use to develop a fast prototype and build finished app with little customization.
Flutter provides full native performance both in iOS and Android. It’s widget incorporate all critical platform differences such as basic animation like scrolling, navigation and displaying icons and fonts.
4. App State Management
App States are important concept to reason what your UI layout should look like and how should it behave in every next action. You can start from basic Stateful Widget to Redux/Flux pattern to even more advanced concepts like Streams for Business Logic (BLoC).
Some More Features:
- Built-in Support for Unit Testing
- Built-in Option for Themeing
- Support for writing Platform specific Native Codes