Merge pull request #1651 from HansMuller/fix_scrollable_tabs
Fix scrollable tabs, add basic unit test
This commit is contained in:
commit
7d1dfc7be0
@ -335,7 +335,7 @@ class Tab extends StatelessComponent {
|
||||
}
|
||||
|
||||
Container centeredLabel = new Container(
|
||||
child: new Center(child: labelContent),
|
||||
child: new Center(child: labelContent, shrinkWrap: ShrinkWrap.both),
|
||||
constraints: new BoxConstraints(minWidth: _kMinTabWidth),
|
||||
padding: _kTabLabelPadding
|
||||
);
|
||||
|
76
packages/unit/test/widget/tabs_test.dart
Normal file
76
packages/unit/test/widget/tabs_test.dart
Normal file
@ -0,0 +1,76 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
import 'widget_tester.dart';
|
||||
|
||||
int selectedIndex = 2;
|
||||
|
||||
Widget buildFrame({ List<String> tabs, bool isScrollable: false }) {
|
||||
return new TabBar(
|
||||
labels: tabs.map((String tab) => new TabLabel(text: tab)).toList(),
|
||||
selectedIndex: selectedIndex,
|
||||
isScrollable: isScrollable,
|
||||
onChanged: (tabIndex) {
|
||||
selectedIndex = tabIndex;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void main() {
|
||||
test('TabBar tap selects tab', () {
|
||||
testWidgets((WidgetTester tester) {
|
||||
List<String> tabs = <String>['A', 'B', 'C'];
|
||||
selectedIndex = 2;
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: false));
|
||||
expect(tester.findText('A'), isNotNull);
|
||||
expect(tester.findText('B'), isNotNull);
|
||||
expect(tester.findText('C'), isNotNull);
|
||||
expect(selectedIndex, equals(2));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: false));
|
||||
tester.tap(tester.findText('B'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(1));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: false));
|
||||
tester.tap(tester.findText('C'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(2));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: false));
|
||||
tester.tap(tester.findText('A'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(0));
|
||||
});
|
||||
});
|
||||
|
||||
test('Scrollable TabBar tap selects tab', () {
|
||||
testWidgets((WidgetTester tester) {
|
||||
List<String> tabs = <String>['A', 'B', 'C'];
|
||||
selectedIndex = 2;
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: true));
|
||||
expect(tester.findText('A'), isNotNull);
|
||||
expect(tester.findText('B'), isNotNull);
|
||||
expect(tester.findText('C'), isNotNull);
|
||||
expect(selectedIndex, equals(2));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: true));
|
||||
tester.tap(tester.findText('B'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(1));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: true));
|
||||
tester.tap(tester.findText('C'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(2));
|
||||
|
||||
tester.pumpWidget(buildFrame(tabs: tabs, isScrollable: true));
|
||||
tester.tap(tester.findText('A'));
|
||||
tester.pump();
|
||||
expect(selectedIndex, equals(0));
|
||||
});
|
||||
});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user