# Flutter gallery

A demo app for Flutter's material design and cupertino widgets, as
well as many other features of the Flutter SDK.

## Building

You can follow these instructions to build the gallery app
and install it onto your device.

### Prerequisites

If you are new to Flutter, please first follow
the [Flutter Setup](https://flutter.dev/setup/) guide.

### Building and installing the Flutter app

* `cd $FLUTTER_ROOT/examples/flutter_gallery`
* `flutter pub get`
* `flutter run --release`

The `flutter run --release` command both builds and installs the Flutter app.

## Prerelease checklist

* Verify that the About box's license page scrolls and reveals its long
long stream of license texts.

## Icon

Android launcher icons were generated using Android Asset Studio:
https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.type=image&foreground.space.trim=1&foreground.space.pad=0.1&foreColor=607d8b%2C0&crop=0&backgroundShape=square&backColor=fafafa%2C100&effects=none
