| OLD | NEW | 
 | (Empty) | 
|   1 // Copyright 2015 The Chromium Authors. All rights reserved. |  | 
|   2 // Use of this source code is governed by a BSD-style license that can be |  | 
|   3 // found in the LICENSE file. |  | 
|   4  |  | 
|   5 import '../animation/animated_value.dart'; |  | 
|   6 import '../fn.dart'; |  | 
|   7 import 'dart:mirrors'; |  | 
|   8  |  | 
|   9 abstract class AnimatedComponent extends Component { |  | 
|  10   AnimatedComponent({ Object key }) : super(key: key, stateful: true); |  | 
|  11  |  | 
|  12   var _debugAnimatedFields = new Set<Symbol>(); |  | 
|  13   bool _debugIsNotYetAnimated(Symbol s) { |  | 
|  14     return _debugAnimatedFields.add(s); |  | 
|  15   } |  | 
|  16  |  | 
|  17   animateField(AnimatedValue value, Symbol symbol) { |  | 
|  18     // TODO(rafaelw): Assert symbol is present on |this|, is private and |  | 
|  19     // is over the same parameterized type as the animated value. |  | 
|  20     var mirror = reflect(this); |  | 
|  21     var subscription; |  | 
|  22  |  | 
|  23     assert(_debugIsNotYetAnimated(symbol)); |  | 
|  24     mirror.setField(symbol, value.value); |  | 
|  25  |  | 
|  26     onDidMount(() { |  | 
|  27       subscription = value.onValueChanged.listen((_) { |  | 
|  28         mirror.setField(symbol, value.value); |  | 
|  29         scheduleBuild(); |  | 
|  30       }); |  | 
|  31     }); |  | 
|  32  |  | 
|  33     onDidUnmount(() { |  | 
|  34       if (subscription != null) { |  | 
|  35         subscription.cancel(); |  | 
|  36         subscription = null; |  | 
|  37       } |  | 
|  38     }); |  | 
|  39   } |  | 
|  40 } |  | 
| OLD | NEW |