Commit 7d1dfc7b authored by Hans Muller's avatar Hans Muller

Merge pull request #1651 from HansMuller/fix_scrollable_tabs

Fix scrollable tabs, add basic unit test
parents a37fc682 09ac8de2
......@@ -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
);
......
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));
});
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment