// 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:sky/animation/animation_performance.dart'; import 'package:sky/widgets/basic.dart'; abstract class AnimatedComponent extends StatefulComponent { AnimatedComponent({ Key key }) : super(key: key); void syncFields(AnimatedComponent source) { } final List<AnimationPerformance> _watchedPerformances = new List<AnimationPerformance>(); void _performanceChanged() { setState(() { // We don't actually have any state to change, per se, // we just know that we have in fact changed state. }); } void watch(AnimationPerformance performance) { assert(!_watchedPerformances.contains(performance)); _watchedPerformances.add(performance); if (mounted) performance.addListener(_performanceChanged); } void didMount() { for (AnimationPerformance performance in _watchedPerformances) performance.addListener(_performanceChanged); super.didMount(); } void didUnmount() { for (AnimationPerformance performance in _watchedPerformances) performance.removeListener(_performanceChanged); super.didUnmount(); } }