Basic foundational
classes, and building block services such as
animation,
painting, and
gestures that offer
commonly used abstractions over the underlying foundation.

The rendering
layer provides an
abstraction for dealing with layout. With this layer, you can build a tree of
renderable objects. You can manipulate these objects dynamically, with the
tree automatically updating the layout to reflect your changes.

The widgets layer is
a composition abstraction. Each render object in the rendering layer has a
corresponding class in the widgets layer. In addition, the widgets layer
allows you to define combinations of classes that you can reuse. This is 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 Material or iOS design languages.

camera and

webview, as well as platform-agnostic
features like

characters,

http, and