// 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'; 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 StatefulWidget { SnackBarDemo({ Key key }) : super(key: key); static const String routeName = '/snack-bar'; @override _SnackBarDemoState createState() => new _SnackBarDemoState(); } class _SnackBarDemoState extends State<SnackBarDemo> { int _snackBarIndex = 1; Widget buildBody(BuildContext context) { return new ScrollView( padding: const EdgeInsets.all(24.0), children: <Widget>[ new Text(_text1), new Text(_text2), new Center( child: new RaisedButton( child: new Text('SHOW A SNACKBAR'), onPressed: () { final int thisSnackBarIndex = _snackBarIndex++; Scaffold.of(context).showSnackBar(new SnackBar( content: new Text('This is snackbar #$thisSnackBarIndex.'), action: new SnackBarAction( label: 'ACTION', onPressed: () { Scaffold.of(context).showSnackBar(new SnackBar( content: new Text('You pressed snackbar $thisSnackBarIndex\'s action.') )); } ) )); } ) ), new Text(_text3), ] .map((Widget child) { return new Container( margin: const EdgeInsets.symmetric(vertical: 12.0), child: child ); }) .toList() ); } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: 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 ) ); } }