flutter

    Flutter is native mobile application development framework, built and open sourced by google. And now it can be develop web and desktop application too. By using flutter you can develop desktop, web, mobile with single code and thus the best part is all of that code compiles into native code of all platform. In short, Flutter is a truly complete native mobile development framework for creating applications.

Flutter says: - 
Write once, and deploy everywhere.

What flutter provides to you?

Rendering engine 

In  application the rendering engine is module that's reasonable for generating the graphical output. Basically the work of a rendering engine is to convert the applications internal model into a series of pixel brightness's which will be displayed by a monitor (or other graphical device e.g. a printer). 

In flutter rendering layer provides an abstraction for handling layout. With render layer, you'll build a tree of objects which will render. you'll manipulate these objects dynamically, with the tree automatically updating the layout to reflect your changes.
Flutter widgets(Nothing but UI component like Appbar, Textbox, Scaffold etc.) layer may be a composition abstraction. Each render object within the rendering layer features a corresponding class within the widgets layer. additionally , the widgets layer allows you to define combinations of classes that you simply can reuse. this is often the layer at which the reactive programming model is introduced. The Material and Cupertino libraries offer comprehensive sets of controls that use the widget layer’s composition primitives to implement the fabric or iOS design languages.
User interface components 

Widget within the Flutter is essentially a user interface component that affects and controls the view and interface of the app. It represents an immutable description of a part of the interface and includes graphics, text, shapes, and animations that are created using widgets. The widgets are almost like the React components. IN Flutter, application is itself a widget that contains many sub widgets. It means the app is that the top-level widget, and its UI is build using one or more children widgets, which again includes sub child widgets. This feature helps you to make a posh user interface very easily.

Testing framework 

A unit test tests one function, method, or class. The goal of a unit test is to verify the correctness of a unit of logic under a spread of conditions. External dependencies of the unit under test are generally mocked out. Unit tests generally don’t read from or write to disk, render to screen, or receive user actions from outside the method running the test.

A widget test (in other user interface frameworks mentioned as component test) tests one widget. The goal of a widget test is to verify that the widget’s user interface looks and interacts needless to say . Testing a widget involves multiple classes and requires a test environment that gives the acceptable widget life cycle of context. For example, the Widget being tested should be ready to receive and answer user actions and events, perform layout, and instantiate child widgets. A widget test is therefore more comprehensive than a unit test. However, sort of a unit test, a widget test’s environment is replaced with an implementation much simpler than a full-blown user interface  system.

An integration test tests an entire app or a large part of an app. The goal of an integration test is to verify that every the widgets and services being tested work together needless to say . Furthermore, you'll use integration tests to verify your app’s performance. Generally, an integration test runs on a true device or an OS emulator, like iOS Simulator or Android Emulator. The app under test is usually isolated from the driver code to avoid skewing the results.

Tooling 

Flutter’s hot reload feature helps you quickly and simply experiment, build UIs, add features, and fix bugs. Hot reload works by  updating  source code files into the running Dart Virtual Machine . After the virtual machine updates the code  , the Flutter framework automatically rebuilds the widget tree, allowing developer to quickly view the consequences of his changes. The Flutter widget inspector may be a powerful tool for visualizing and exploring Flutter widget trees. The Flutter framework uses widgets because the code building block for controls (such as text, scaffold, WebView), to layout (such as centering, padding, rows, and columns). The inspector helps you visualize and explore Flutter widget tree

It consists of three parts, each increasing in granularity. Flutter frames chart (Flutter apps only),Timeline events chart, CPU profiler .The performance view allows you to know the performance and profile a session of your  Flutter application. The network view allows you to examine HTTP network traffic from your Dart or Flutter application.

Router 
Which causes you to specialize in the interesting problems in your app. Flutter isn’t only about being easy, It’s also about control. you'll build great mobile apps using Flutter with a less knowledge of the framework. But you'll also create unique features.

Let’s meet friend of flutter whose name is dart 

Flutter is a framework which uses dart as programming language. Flutter appears to be framework more than a Dart library. Dart is also owned and maintained by Google. this might offer you pause. There are reasons to choose flutter : it’s not one among the recent languages of today, few companies use it in production.
Is Google just using it because it’s Google’s language?              
say no

This makes it easy to write down down visual user experiences with Dart, with no need for a terminology.

1. Dart supports both just-in-time compiling and ahead-of-time compiling:

 * The ahead-of-time compiler change dart code into effective platform specific native code. This makes Flutter fast (A win for the user and also the developer, but it also means almost the whole framework is written in Dart. For you, the developer, meaning you'll change almost everything.

 * Dart’s optional just-in-time compiling which allows you to hot reload application at running application. Fast development and iteration are a key to the joys of using Flutter.

2. Dart is object-oriented. This makes it easy to write down visual user experiences with Dart, with no need for a terminology.

3. Dart might be a productive, predictable language and straightforward to seek out out which feels familiar. doesn't matter whether you come from a dynamic language background or a static language background .