| // Copyright 2016 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/material.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('ExpansionPanelList test', (WidgetTester tester) async { |
| int index; |
| bool isExpanded; |
| |
| await tester.pumpWidget( |
| new SingleChildScrollView( |
| child: new ExpansionPanelList( |
| expansionCallback: (int _index, bool _isExpanded) { |
| index = _index; |
| isExpanded = _isExpanded; |
| }, |
| children: <ExpansionPanel>[ |
| new ExpansionPanel( |
| headerBuilder: (BuildContext context, bool isExpanded) { |
| return new Text(isExpanded ? 'B' : 'A'); |
| }, |
| body: const SizedBox(height: 100.0) |
| ) |
| ] |
| ) |
| ) |
| ); |
| |
| expect(find.text('A'), findsOneWidget); |
| expect(find.text('B'), findsNothing); |
| RenderBox box = tester.renderObject(find.byType(ExpansionPanelList)); |
| final double oldHeight = box.size.height; |
| expect(find.byType(ExpandIcon), findsOneWidget); |
| await tester.tap(find.byType(ExpandIcon)); |
| expect(index, 0); |
| expect(isExpanded, isFalse); |
| box = tester.renderObject(find.byType(ExpansionPanelList)); |
| expect(box.size.height, equals(oldHeight)); |
| |
| // now expand the child panel |
| await tester.pumpWidget( |
| new SingleChildScrollView( |
| child: new ExpansionPanelList( |
| expansionCallback: (int _index, bool _isExpanded) { |
| index = _index; |
| isExpanded = _isExpanded; |
| }, |
| children: <ExpansionPanel>[ |
| new ExpansionPanel( |
| headerBuilder: (BuildContext context, bool isExpanded) { |
| return new Text(isExpanded ? 'B' : 'A'); |
| }, |
| body: const SizedBox(height: 100.0), |
| isExpanded: true // this is the addition |
| ) |
| ] |
| ) |
| ) |
| ); |
| |
| await tester.pump(const Duration(milliseconds: 200)); |
| |
| |
| expect(find.text('A'), findsNothing); |
| expect(find.text('B'), findsOneWidget); |
| box = tester.renderObject(find.byType(ExpansionPanelList)); |
| expect(box.size.height - oldHeight, greaterThanOrEqualTo(100.0)); // 100 + some margin |
| }); |
| } |