elevation_demo.dart 1.63 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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
class ElevationDemo extends StatefulWidget {
  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,
    ];

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

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