| import 'package:sky/widgets.dart'; |
| import 'package:test/test.dart'; |
| |
| import 'widget_tester.dart'; |
| |
| class InnerComponent extends StatefulComponent { |
| InnerComponent(); |
| |
| bool _didInitState = false; |
| |
| void initState() { |
| _didInitState = true; |
| } |
| |
| void syncConstructorArguments(InnerComponent source) { |
| } |
| |
| Widget build() { |
| return new Container(); |
| } |
| } |
| |
| class OuterContainer extends StatefulComponent { |
| OuterContainer({ this.child }); |
| |
| InnerComponent child; |
| |
| void syncConstructorArguments(OuterContainer source) { |
| child = source.child; |
| } |
| |
| Widget build() { |
| return child; |
| } |
| } |
| |
| void main() { |
| test('resync stateful widget', () { |
| |
| WidgetTester tester = new WidgetTester(); |
| |
| InnerComponent inner1; |
| InnerComponent inner2; |
| OuterContainer outer; |
| |
| tester.pumpFrame(() { |
| inner1 = new InnerComponent(); |
| outer = new OuterContainer(child: inner1); |
| return outer; |
| }); |
| |
| expect(inner1._didInitState, isTrue); |
| expect(inner1.parent, isNotNull); |
| |
| tester.pumpFrame(() { |
| inner2 = new InnerComponent(); |
| return new OuterContainer(child: inner2); |
| }); |
| |
| expect(inner1._didInitState, isTrue); |
| expect(inner1.parent, isNotNull); |
| expect(inner2._didInitState, isFalse); |
| expect(inner2.parent, isNull); |
| |
| outer.setState(() {}); |
| tester.pumpFrameWithoutChange(0.0); |
| |
| expect(inner1._didInitState, isTrue); |
| expect(inner1.parent, isNotNull); |
| expect(inner2._didInitState, isFalse); |
| expect(inner2.parent, isNull); |
| |
| }); |
| } |