| // 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. |
| |
| import 'package:flutter/material.dart'; |
| |
| import '../../gallery/demo.dart'; |
| |
| class ElevationDemo extends StatefulWidget { |
| const ElevationDemo({super.key}); |
| |
| static const String routeName = '/material/elevation'; |
| |
| @override |
| State<StatefulWidget> createState() => _ElevationDemoState(); |
| } |
| |
| class _ElevationDemoState extends State<ElevationDemo> { |
| bool _showElevation = true; |
| |
| List<Widget> buildCards() { |
| const List<double> elevations = <double>[ |
| 0.0, |
| 1.0, |
| 2.0, |
| 3.0, |
| 4.0, |
| 5.0, |
| 8.0, |
| 16.0, |
| 24.0, |
| ]; |
| |
| return elevations.map<Widget>((double elevation) { |
| return Center( |
| child: Card( |
| margin: const EdgeInsets.all(20.0), |
| elevation: _showElevation ? elevation : 0.0, |
| child: SizedBox( |
| height: 100.0, |
| width: 100.0, |
| child: Center( |
| child: Text('${elevation.toStringAsFixed(0)} pt'), |
| ), |
| ), |
| ), |
| ); |
| }).toList(); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| appBar: AppBar( |
| title: const Text('Elevation'), |
| actions: <Widget>[ |
| MaterialDemoDocumentationButton(ElevationDemo.routeName), |
| IconButton( |
| tooltip: 'Toggle elevation', |
| icon: const Icon(Icons.sentiment_very_satisfied), |
| onPressed: () { |
| setState(() => _showElevation = !_showElevation); |
| }, |
| ), |
| ], |
| ), |
| body: Scrollbar( |
| child: ListView( |
| primary: true, |
| children: buildCards(), |
| ), |
| ), |
| ); |
| } |
| } |