Add a manual test app for animated icons (#14272)
diff --git a/dev/manual_tests/lib/animated_icons.dart b/dev/manual_tests/lib/animated_icons.dart
new file mode 100644
index 0000000..7e676b7
--- /dev/null
+++ b/dev/manual_tests/lib/animated_icons.dart
@@ -0,0 +1,90 @@
+// Copyright 2018 The Chromium 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';
+
+class AnimatedIconsTestApp extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return new MaterialApp(
+ title: 'Animated Icons Test',
+ home: const Scaffold(
+ body: const IconsList(),
+ ),
+ );
+ }
+}
+
+class IconsList extends StatelessWidget {
+ const IconsList();
+
+ @override
+ Widget build(BuildContext context) {
+ return new ListView(
+ children: samples.map((IconSample s) => new IconSampleRow(s)).toList(),
+ );
+ }
+}
+
+class IconSampleRow extends StatefulWidget {
+ const IconSampleRow(this.sample);
+
+ final IconSample sample;
+
+ @override
+ State createState() => new IconSampleRowState();
+}
+
+class IconSampleRowState extends State<IconSampleRow> with SingleTickerProviderStateMixin {
+ AnimationController progress;
+
+ @override
+ Widget build(BuildContext context) {
+ return new ListTile(
+ leading: new InkWell(
+ onTap: () { progress.forward(from: 0.0); },
+ child: new AnimatedIcon(
+ icon: widget.sample.icon,
+ progress: progress,
+ color: Colors.lightBlue,
+ ),
+ ),
+ title: new Text(widget.sample.description),
+ subtitle: new Slider(
+ value: progress.value,
+ onChanged: (double v) { progress.animateTo(v, duration: Duration.ZERO); },
+ ),
+ );
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ progress = new AnimationController(vsync: this, duration: const Duration(milliseconds: 300));
+ progress.addListener(_handleChange);
+ }
+
+ @override
+ void dispose() {
+ progress.removeListener(_handleChange);
+ super.dispose();
+ }
+
+ void _handleChange() {
+ setState(() {});
+ }
+}
+
+const List<IconSample> samples = const <IconSample> [
+ const IconSample(AnimatedIcons.arrow_menu, 'arrow_menu'),
+ const IconSample(AnimatedIcons.menu_arrow, 'menu_arrow'),
+];
+
+class IconSample {
+ const IconSample(this.icon, this.description);
+ final AnimatedIconData icon;
+ final String description;
+}
+
+void main() => runApp(new AnimatedIconsTestApp());