main.dart 5.51 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
import 'package:flutter/material.dart';
6
import 'package:macrobenchmarks/src/color_filter_and_fade.dart';
7
import 'package:macrobenchmarks/src/large_images.dart';
8
import 'package:macrobenchmarks/src/picture_cache.dart';
9 10

import 'common.dart';
Dan Field's avatar
Dan Field committed
11
import 'src/animated_placeholder.dart';
12
import 'src/backdrop_filter.dart';
13
import 'src/cubic_bezier.dart';
14
import 'src/cull_opacity.dart';
15
import 'src/filtered_child_animation.dart';
16
import 'src/post_backdrop_filter.dart';
17
import 'src/simple_animation.dart';
18
import 'src/text.dart';
19

Dan Field's avatar
Dan Field committed
20
const String kMacrobenchmarks = 'Macrobenchmarks';
21

22
void main() => runApp(const MacrobenchmarksApp());
23 24

class MacrobenchmarksApp extends StatelessWidget {
25 26
  const MacrobenchmarksApp({this.initialRoute = '/'});

27 28 29 30
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: kMacrobenchmarks,
31
      initialRoute: initialRoute,
32 33 34
      routes: <String, WidgetBuilder>{
        '/': (BuildContext context) => HomePage(),
        kCullOpacityRouteName: (BuildContext context) => CullOpacityPage(),
35
        kCubicBezierRouteName: (BuildContext context) => CubicBezierPage(),
36
        kBackdropFilterRouteName: (BuildContext context) => BackdropFilterPage(),
37
        kPostBackdropFilterRouteName: (BuildContext context) => PostBackdropFilterPage(),
38
        kSimpleAnimationRouteName: (BuildContext conttext) => SimpleAnimationPage(),
39 40
        kPictureCacheRouteName: (BuildContext context) => PictureCachePage(),
        kLargeImagesRouteName: (BuildContext context) => LargeImagesPage(),
41
        kTextRouteName: (BuildContext context) => TextPage(),
Dan Field's avatar
Dan Field committed
42
        kAnimatedPlaceholderRouteName: (BuildContext context) => AnimatedPlaceholderPage(),
43
        kColorFilterAndFadeRouteName: (BuildContext context) => ColorFilterAndFadePage(),
44
        kFadingChildAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.opacity),
45
        kImageFilteredTransformAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.rotateFilter),
46 47 48
      },
    );
  }
49 50

  final String initialRoute;
51 52 53 54 55 56 57 58
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text(kMacrobenchmarks)),
      body: ListView(
59
        key: const Key(kScrollableName),
60 61 62 63
        children: <Widget>[
          RaisedButton(
            key: const Key(kCullOpacityRouteName),
            child: const Text('Cull opacity'),
64
            onPressed: () {
65 66
              Navigator.pushNamed(context, kCullOpacityRouteName);
            },
67 68 69 70
          ),
          RaisedButton(
            key: const Key(kCubicBezierRouteName),
            child: const Text('Cubic Bezier'),
71
            onPressed: () {
72 73
              Navigator.pushNamed(context, kCubicBezierRouteName);
            },
74
          ),
75 76 77
          RaisedButton(
            key: const Key(kBackdropFilterRouteName),
            child: const Text('Backdrop Filter'),
78
            onPressed: () {
79 80 81
              Navigator.pushNamed(context, kBackdropFilterRouteName);
            },
          ),
82 83 84 85 86 87 88
          RaisedButton(
            key: const Key(kPostBackdropFilterRouteName),
            child: const Text('Post Backdrop Filter'),
            onPressed: () {
              Navigator.pushNamed(context, kPostBackdropFilterRouteName);
            },
          ),
89 90 91 92 93 94 95
          RaisedButton(
            key: const Key(kSimpleAnimationRouteName),
            child: const Text('Simple Animation'),
            onPressed: () {
              Navigator.pushNamed(context, kSimpleAnimationRouteName);
            },
          ),
96 97 98 99 100 101 102
          RaisedButton(
            key: const Key(kPictureCacheRouteName),
            child: const Text('Picture Cache'),
            onPressed: () {
              Navigator.pushNamed(context, kPictureCacheRouteName);
            },
          ),
103 104 105 106 107 108 109
          RaisedButton(
            key: const Key(kLargeImagesRouteName),
            child: const Text('Large Images'),
            onPressed: () {
              Navigator.pushNamed(context, kLargeImagesRouteName);
            },
          ),
110 111 112 113 114 115 116
          RaisedButton(
            key: const Key(kTextRouteName),
            child: const Text('Text'),
            onPressed: () {
              Navigator.pushNamed(context, kTextRouteName);
            },
          ),
Dan Field's avatar
Dan Field committed
117 118 119 120 121 122 123
          RaisedButton(
            key: const Key(kAnimatedPlaceholderRouteName),
            child: const Text('Animated Placeholder'),
            onPressed: () {
              Navigator.pushNamed(context, kAnimatedPlaceholderRouteName);
            },
          ),
124 125 126 127 128 129 130
          RaisedButton(
            key: const Key(kColorFilterAndFadeRouteName),
            child: const Text('Color Filter and Fade'),
            onPressed: () {
              Navigator.pushNamed(context, kColorFilterAndFadeRouteName);
            },
          ),
131 132 133 134 135 136 137
          RaisedButton(
            key: const Key(kFadingChildAnimationRouteName),
            child: const Text('Fading Child Animation'),
            onPressed: () {
              Navigator.pushNamed(context, kFadingChildAnimationRouteName);
            },
          ),
138 139 140 141 142 143 144
          RaisedButton(
            key: const Key(kImageFilteredTransformAnimationRouteName),
            child: const Text('ImageFiltered Transform Animation'),
            onPressed: () {
              Navigator.pushNamed(context, kImageFilteredTransformAnimationRouteName);
            },
          ),
145 146 147 148 149
        ],
      ),
    );
  }
}