blob: e242a68b5567689b689f5646632be387fcc5d2ae [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flutter code sample for [SnackBar].
import 'package:flutter/material.dart';
void main() => runApp(const SnackBarApp());
class SnackBarApp extends StatelessWidget {
const SnackBarApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: SnackBarExample(),
);
}
}
class SnackBarExample extends StatefulWidget {
const SnackBarExample({super.key});
@override
State<SnackBarExample> createState() => _SnackBarExampleState();
}
class _SnackBarExampleState extends State<SnackBarExample> {
bool _largeLogo = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('SnackBar Sample')),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
ElevatedButton(
onPressed: () {
const SnackBar snackBar = SnackBar(
content: Text('A SnackBar has been shown.'),
behavior: SnackBarBehavior.floating,
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
child: const Text('Show SnackBar'),
),
const SizedBox(height: 8.0),
ElevatedButton(
onPressed: () {
setState(() => _largeLogo = !_largeLogo);
},
child: Text(_largeLogo ? 'Shrink Logo' : 'Grow Logo'),
),
],
),
),
// A floating [SnackBar] is positioned above [Scaffold.floatingActionButton].
// If the Widget provided to the floatingActionButton slot takes up too much space
// for the SnackBar to be visible, an error will be thrown.
floatingActionButton: Container(
constraints: BoxConstraints.tightFor(
width: 150,
height: _largeLogo ? double.infinity : 150,
),
decoration: const BoxDecoration(
color: Colors.blueGrey,
borderRadius: BorderRadius.all(Radius.circular(20)),
),
child: const FlutterLogo(),
),
);
}
}