| import 'package:flutter/animation.dart'; |
| import 'package:flutter/rendering.dart'; |
| import 'package:flutter/widgets.dart'; |
| import 'package:test/test.dart'; |
| |
| import 'widget_tester.dart'; |
| |
| void main() { |
| test('AnimatedContainer control test', () { |
| testWidgets((WidgetTester tester) { |
| GlobalKey key = new GlobalKey(); |
| |
| BoxDecoration decorationA = new BoxDecoration( |
| backgroundColor: new Color(0xFF00FF00) |
| ); |
| |
| BoxDecoration decorationB = new BoxDecoration( |
| backgroundColor: new Color(0xFF0000FF) |
| ); |
| |
| tester.pumpWidget( |
| new AnimatedContainer( |
| key: key, |
| duration: const Duration(milliseconds: 200), |
| decoration: decorationA |
| ) |
| ); |
| |
| RenderDecoratedBox box = key.currentState.context.findRenderObject(); |
| expect(box.decoration.backgroundColor, equals(decorationA.backgroundColor)); |
| |
| tester.pumpWidget( |
| new AnimatedContainer( |
| key: key, |
| duration: const Duration(milliseconds: 200), |
| decoration: decorationB |
| ) |
| ); |
| |
| expect(key.currentState.context.findRenderObject(), equals(box)); |
| expect(box.decoration.backgroundColor, equals(decorationA.backgroundColor)); |
| |
| tester.pump(const Duration(seconds: 1)); |
| |
| expect(box.decoration.backgroundColor, equals(decorationB.backgroundColor)); |
| |
| }); |
| }); |
| |
| test('AnimatedContainer overanimate test', () { |
| testWidgets((WidgetTester tester) { |
| tester.pumpWidget( |
| new AnimatedContainer( |
| duration: const Duration(milliseconds: 200), |
| decoration: new BoxDecoration( |
| backgroundColor: new Color(0xFF00FF00) |
| ) |
| ) |
| ); |
| expect(scheduler.transientCallbackCount, 0); |
| tester.pump(new Duration(seconds: 1)); |
| expect(scheduler.transientCallbackCount, 0); |
| tester.pumpWidget( |
| new AnimatedContainer( |
| duration: const Duration(milliseconds: 200), |
| decoration: new BoxDecoration( |
| backgroundColor: new Color(0xFF00FF00) |
| ) |
| ) |
| ); |
| expect(scheduler.transientCallbackCount, 0); |
| tester.pump(new Duration(seconds: 1)); |
| expect(scheduler.transientCallbackCount, 0); |
| tester.pumpWidget( |
| new AnimatedContainer( |
| duration: const Duration(milliseconds: 200), |
| decoration: new BoxDecoration( |
| backgroundColor: new Color(0xFF0000FF) |
| ) |
| ) |
| ); |
| expect(scheduler.transientCallbackCount, 1); // this is the only time an animation should have started! |
| tester.pump(new Duration(seconds: 1)); |
| expect(scheduler.transientCallbackCount, 0); |
| tester.pumpWidget( |
| new AnimatedContainer( |
| duration: const Duration(milliseconds: 200), |
| decoration: new BoxDecoration( |
| backgroundColor: new Color(0xFF0000FF) |
| ) |
| ) |
| ); |
| expect(scheduler.transientCallbackCount, 0); |
| }); |
| }); |
| } |