// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

const String _text1 =
  "Snackbars provide lightweight feedback about an operation by "
  "showing a brief message at the bottom of the screen. Snackbars "
  "can contain an action.";

const String _text2 =
  "Snackbars should contain a single line of text directly related "
  "to the operation performed. They cannot contain icons.";

const String _text3 =
  "By default snackbars automatically disappear after a few seconds ";

class SnackBarDemo extends StatelessComponent {
  SnackBarDemo({ Key key }) : super(key: key);

  Widget buildBody(BuildContext context) {
    return new Padding(
      padding: const EdgeDims.all(24.0),
      child: new Column(
        children: <Widget>[
          new Text(_text1),
          new Text(_text2),
          new RaisedButton(
            child: new Text('Show a SnackBar'),
            onPressed: () {
              Scaffold.of(context).showSnackBar(new SnackBar(
                content: new Text('This is a SnackBar'),
                action: new SnackBarAction(
                  label: 'Action',
                  onPressed: () {
                    Scaffold.of(context).showSnackBar(new SnackBar(
                      content: new Text("You pressed the SnackBar's Action")
                    ));
                  }
                )
              ));
            }
          ),
          new Text(_text3),
        ]
        .map((Widget child) {
          return new Container(
            margin: const EdgeDims.symmetric(vertical: 12.0),
            child: child
          );
        })
        .toList()
      )
    );
  }

  Widget build(BuildContext context) {
    return new Scaffold(
      toolBar: new ToolBar(
        center: new Text('SnackBar')
      ),
      body: new Builder(
        // Create an inner BuildContext so that the snackBar onPressed methods
        // can refer to the Scaffold with Scaffold.of().
        builder: buildBody
      )
    );
  }
}
