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(
|
Container centeredLabel = new Container(
|
||||||
child: new Center(child: labelContent),
|
child: new Center(child: labelContent, shrinkWrap: ShrinkWrap.both),
|
||||||
constraints: new BoxConstraints(minWidth: _kMinTabWidth),
|
constraints: new BoxConstraints(minWidth: _kMinTabWidth),
|
||||||
padding: _kTabLabelPadding
|
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