elevation_demo.dart 1.76 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
import 'package:flutter/material.dart';

7 8
import '../../gallery/demo.dart';

9
class ElevationDemo extends StatefulWidget {
10
  const ElevationDemo({super.key});
11

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  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,
    ];

34
    return elevations.map<Widget>((double elevation) {
35 36
      return Center(
        child: Card(
37 38
          margin: const EdgeInsets.all(20.0),
          elevation: _showElevation ? elevation : 0.0,
39
          child: SizedBox(
40 41
            height: 100.0,
            width: 100.0,
42 43
            child: Center(
              child: Text('${elevation.toStringAsFixed(0)} pt'),
44 45 46 47 48 49 50 51 52
            ),
          ),
        ),
      );
    }).toList();
  }

  @override
  Widget build(BuildContext context) {
53 54
    return Scaffold(
      appBar: AppBar(
55 56
        title: const Text('Elevation'),
        actions: <Widget>[
57
          MaterialDemoDocumentationButton(ElevationDemo.routeName),
58
          IconButton(
59
            tooltip: 'Toggle elevation',
60 61 62 63
            icon: const Icon(Icons.sentiment_very_satisfied),
            onPressed: () {
              setState(() => _showElevation = !_showElevation);
            },
64
          ),
65 66
        ],
      ),
67 68 69 70 71 72
      body: Scrollbar(
        child: ListView(
          primary: true,
          children: buildCards(),
        ),
      ),
73 74 75
    );
  }
}