| // Copyright 2015 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/animation.dart'; |
| |
| import 'framework.dart'; |
| |
| abstract class StatusTransitionComponent extends StatefulComponent { |
| StatusTransitionComponent({ |
| Key key, |
| this.performance |
| }) : super(key: key) { |
| assert(performance != null); |
| } |
| |
| final PerformanceView performance; |
| |
| Widget build(BuildContext context); |
| |
| _StatusTransitionState createState() => new _StatusTransitionState(); |
| } |
| |
| class _StatusTransitionState extends State<StatusTransitionComponent> { |
| void initState() { |
| super.initState(); |
| config.performance.addStatusListener(_performanceStatusChanged); |
| } |
| |
| void didUpdateConfig(StatusTransitionComponent oldConfig) { |
| if (config.performance != oldConfig.performance) { |
| oldConfig.performance.removeStatusListener(_performanceStatusChanged); |
| config.performance.addStatusListener(_performanceStatusChanged); |
| } |
| } |
| |
| void dispose() { |
| config.performance.removeStatusListener(_performanceStatusChanged); |
| super.dispose(); |
| } |
| |
| void _performanceStatusChanged(PerformanceStatus status) { |
| setState(() { |
| // The performance's state is our build state, and it changed already. |
| }); |
| } |
| |
| Widget build(BuildContext context) { |
| return config.build(context); |
| } |
| } |