# data[].attributes.body
It is a tool that incorporates both iOS and Android environments as well as web

# data[].attributes.body
Stateless and Stateful Widgets

# data[].attributes.headline
Dart enables flutter to avoid using a separate declarative layout language 

# data[].attributes.subject
Dart enables flutter to avoid using a separate declarative layout language 

# data[].attributes.body
like JSX and XM. which reduces compilation overhead. IE built-in ui component support

# data[].attributes.body
Flutter because from a single codebase, we can develop applications for anrionds,ios,windows,mac,etc.

# data[].attributes.body
Basic building blocks for apps in flutter.

# data[].attributes.body
 It is mainly because one can develop applications for Android, iOS, Windows, Mac, Linux, and web from a single codebase.

# data[].attributes.headline
Flutter has a wide range of developer packages available

# data[].attributes.subject
Flutter has a wide range of developer packages available

# data[].attributes.body
- Accessibility: Makes the app easy to access

- Image & icons: Widgets to display images and icons

- Layout widgets: Used to organize the way items are displayed on the screen.

Animation & Motion Widgets :  Add animations to other widgets.

Input Widgets: Provide input functionality in a flutter application

Material widgets : A set of widgets that mainly follow material design by google.

Text Widget: Display text

Styling Widgets: deals with theme, responsiveness & sizing of the app.

# data[].attributes.body
If a widget can change when a user interacts with it, it's stateful, but if it does not change when a user interacts with it, it's stateless

# data[].attributes.headline
Flutter allows the addition of gamification features, implement a gamified interface on the mobile application and  enables adequate speed and performance.

# data[].attributes.subject
Flutter allows the addition of gamification features, implement a gamified interface on the mobile application and  enables adequate speed and performance.

# data[].attributes.body
Static, Independent, don't depend on any data change.

# data[].attributes.headline
Characteristics of Stateful Widgets: Dynamic, Can be updated during runtime based on user interaction.

# data[].attributes.subject
Characteristics of Stateful Widgets: Dynamic, Can be updated during runtime based on user interaction.

# data[].attributes.body
Text, row, column, Container,  Icon, IconButton.

# data[].attributes.headline
Syntax is similar to java and C++ increasing usability and low the barrier of use. 

# data[].attributes.subject
Syntax is similar to java and C++ increasing usability and low the barrier of use. 

# data[].attributes.body
Checkbox, Radio Button, Slider, InkWell, Form, and TextField.

# data[].attributes.body
supports object-oriented programming features and the classes are in form on a blueprint
-We can have functions ,constructors and fields in a class

# data[].attributes.body
Flutter’s hot reload feature helps you quickly and easily experiment, build UIs, add features, and fix bugs. Without having to rebuild the whole application it can happen passively when you save the application or you can instigate it through clicking the lightening button on the UI or by using a shortcut

# data[].attributes.headline
Stateful Widgets comes with two classes: 

# data[].attributes.subject
Stateful Widgets comes with two classes: 

# data[].attributes.body
1. The state object
2. Widget

# data[].attributes.body
we have strings , boolean , objects , integers ,maps,Lists

# data[].attributes.body
dart supports interfaces which define a set of methods available on an object
- Interfaces in Dart do not follow a particular syntax and they are declared using a class

# data[].attributes.body
Mixin is a class that contains methods for use by other class without having to be a parent class

# data[].attributes.body
this is used to implement changes made in a code. It takes less time and just restructures the tree structure of the app.

# data[].attributes.body
This rebuilds UI in seconds to see changes instantly.

# data[].attributes.body
This is for major changes made to the code. It sets state value to default by destroying it and rebuilding the entire tree structure

# data[].attributes.body
Basic difference is, hot reload is used to reflect minor changes while hot restart is used in for major changes made to the application code.

Also hot reload takes less time to reflect changes made while hot restart takes much time, since the entire tree structure has to be re-built.