# Examples of Flutter's layered architecture

This directory contains several self-contained examples that illustrate
Flutter's layered architecture.

 * [*raw/*](raw/) These examples show how to program against the lowest layer of
   the system. They manually receive input packets and construct composited
   scenes.

 * [*rendering/*](rendering/) These examples use Flutter's render tree to
   structure your app using a retained tree of visual objects. These objects
   coordinate to determine their size and position on screen and to handle
   events.

 * [*widgets/*](widgets/) These examples use Flutter's widgets to build more
   elaborate apps using a reactive framework.

 * [*services/*](services/) These examples use services available in Flutter to
   interact with the host platform.

To run each example, specify the demo file on the `flutter run`
command line, for example:

```sh
flutter run raw/spinning_square.dart
flutter run rendering/spinning_square.dart
flutter run widgets/spinning_square.dart
```
