snack_bar_demo.dart 2.46 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// 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 ";

20
class SnackBarDemo extends StatefulWidget {
21 22
  SnackBarDemo({ Key key }) : super(key: key);

23 24 25 26 27 28 29
  @override
  _SnackBarDemoState createState() => new _SnackBarDemoState();
}

class _SnackBarDemoState extends State<SnackBarDemo> {
  int _snackBarIndex = 1;

30 31
  Widget buildBody(BuildContext context) {
    return new Padding(
32
      padding: const EdgeInsets.all(24.0),
33
      child: new Block(
34 35 36
        children: <Widget>[
          new Text(_text1),
          new Text(_text2),
37 38 39 40 41 42
          new Center(
            child: new RaisedButton(
              child: new Text('SHOW A SNACKBAR'),
              onPressed: () {
                final int thisSnackBarIndex = _snackBarIndex++;
                Scaffold.of(context).showSnackBar(new SnackBar(
43
                  content: new Text('This is snackbar #$thisSnackBarIndex.'),
44 45 46 47
                  action: new SnackBarAction(
                    label: 'ACTION',
                    onPressed: () {
                      Scaffold.of(context).showSnackBar(new SnackBar(
48
                        content: new Text('You pressed snackbar $thisSnackBarIndex\'s action.')
49 50 51 52 53 54
                      ));
                    }
                  )
                ));
              }
            )
55 56 57 58 59
          ),
          new Text(_text3),
        ]
        .map((Widget child) {
          return new Container(
60
            margin: const EdgeInsets.symmetric(vertical: 12.0),
61 62 63 64 65 66 67 68
            child: child
          );
        })
        .toList()
      )
    );
  }

69
  @override
70 71
  Widget build(BuildContext context) {
    return new Scaffold(
72
      appBar: new AppBar(
73
        title: new Text('Snackbar')
74 75 76 77 78 79 80 81 82
      ),
      body: new Builder(
        // Create an inner BuildContext so that the snackBar onPressed methods
        // can refer to the Scaffold with Scaffold.of().
        builder: buildBody
      )
    );
  }
}