Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(709)

Side by Side Diff: sky/sdk/example/widgets/tabs.dart

Issue 1221673006: Scrollable TabBar Version 0 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | sky/sdk/lib/widgets/scrollable.dart » ('j') | sky/sdk/lib/widgets/scrollable.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'package:sky/painting/text_style.dart'; 5 import 'package:sky/painting/text_style.dart';
6 import 'package:sky/theme/typography.dart' as typography; 6 import 'package:sky/theme/typography.dart' as typography;
7 import 'package:sky/widgets/basic.dart'; 7 import 'package:sky/widgets/basic.dart';
8 import 'package:sky/widgets/card.dart'; 8 import 'package:sky/widgets/card.dart';
9 import 'package:sky/widgets/scaffold.dart'; 9 import 'package:sky/widgets/scaffold.dart';
10 import 'package:sky/widgets/tabs.dart'; 10 import 'package:sky/widgets/tabs.dart';
11 import 'package:sky/widgets/theme.dart'; 11 import 'package:sky/widgets/theme.dart';
12 import 'package:sky/widgets/tool_bar.dart'; 12 import 'package:sky/widgets/tool_bar.dart';
13 import 'package:sky/widgets/widget.dart'; 13 import 'package:sky/widgets/widget.dart';
14 14
15 class TabbedNavigatorApp extends App { 15 class TabbedNavigatorApp extends App {
16 // The index of the selected tab for each of the TabNavigators constructed bel ow. 16 // The index of the selected tab for each of the TabNavigators constructed bel ow.
17 List<int> selectedIndices = new List<int>.filled(4, 0); 17 List<int> selectedIndices = new List<int>.filled(5, 0);
18 18
19 TabNavigator _buildTabNavigator(int n, List<TabNavigatorView> views) { 19 TabNavigator _buildTabNavigator(int n, List<TabNavigatorView> views, {scrollab le: false}) {
20 return new TabNavigator( 20 return new TabNavigator(
21 views: views, 21 views: views,
22 selectedIndex: selectedIndices[n], 22 selectedIndex: selectedIndices[n],
23 scrollable: scrollable,
23 onChanged: (tabIndex) { 24 onChanged: (tabIndex) {
24 setState(() { selectedIndices[n] = tabIndex; } ); 25 setState(() { selectedIndices[n] = tabIndex; } );
25 } 26 }
26 ); 27 );
27 } 28 }
28 29
29 Widget _buildContent(String label) { 30 Widget _buildContent(String label) {
30 return new Center( 31 return new Center(
31 child: new Text(label, style: const TextStyle(fontSize: 48.0, fontWeight: FontWeight.w800)) 32 child: new Text(label, style: const TextStyle(fontSize: 48.0, fontWeight: FontWeight.w800))
32 ); 33 );
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 builder: () => _buildContent("Portfolio") 66 builder: () => _buildContent("Portfolio")
66 ), 67 ),
67 new TabNavigatorView( 68 new TabNavigatorView(
68 label: const TabLabel(text: 'SUMMARY', icon: 'action/assessment_white'), 69 label: const TabLabel(text: 'SUMMARY', icon: 'action/assessment_white'),
69 builder: () => _buildContent("Summary") 70 builder: () => _buildContent("Summary")
70 ) 71 )
71 ]; 72 ];
72 return _buildTabNavigator(n, views); 73 return _buildTabNavigator(n, views);
73 } 74 }
74 75
76 TabNavigator _buildScrollableTabNavigator(int n) {
77 Iterable<TabNavigatorView> views = [
78 "MIN WIDTH",
79 "THIS TAB LABEL IS SO WIDE THAT IT OCCUPIES TWO LINES",
80 "THIS TAB IS PRETTY WIDE TOO",
81 "MORE",
82 "TABS",
83 "TO",
84 "STRETCH",
85 "OUT",
86 "THE",
87 "TAB BAR"
88 ]
89 .map((text) {
90 return new TabNavigatorView(
91 label: new TabLabel(text: text),
92 builder: () => _buildContent(text)
93 );
94 });
95 return _buildTabNavigator(n, views.toList(), scrollable: true);
96 }
97
98
75 Container _buildCard(TabNavigator tabNavigator) { 99 Container _buildCard(TabNavigator tabNavigator) {
76 return new Container( 100 return new Container(
77 child: new Card(child: tabNavigator), 101 child: new Card(child: new Padding(child: tabNavigator, padding: const Edge Dims.all(8.0))),
78 padding: const EdgeDims.all(12.0), 102 padding: const EdgeDims.all(12.0),
79 decoration: new BoxDecoration(backgroundColor: Theme.of(this).primary[50]) 103 decoration: new BoxDecoration(backgroundColor: Theme.of(this).primary[50])
80 ); 104 );
81 } 105 }
82 106
83 Widget build() { 107 Widget build() {
108 int n = 0;
84 List<TabNavigatorView> views = <TabNavigatorView>[ 109 List<TabNavigatorView> views = <TabNavigatorView>[
85 new TabNavigatorView( 110 new TabNavigatorView(
86 label: const TabLabel(text: 'TEXT'), 111 label: const TabLabel(text: 'TEXT'),
87 builder: () => _buildCard(_buildTextLabelsTabNavigator(0)) 112 builder: () => _buildCard(_buildTextLabelsTabNavigator(n++))
88 ), 113 ),
89 new TabNavigatorView( 114 new TabNavigatorView(
90 label: const TabLabel(text: 'ICONS'), 115 label: const TabLabel(text: 'ICONS'),
91 builder: () => _buildCard(_buildIconLabelsTabNavigator(1)) 116 builder: () => _buildCard(_buildIconLabelsTabNavigator(n++))
92 ), 117 ),
93 new TabNavigatorView( 118 new TabNavigatorView(
94 label: const TabLabel(text: 'BOTH'), 119 label: const TabLabel(text: 'BOTH'),
95 builder: () => _buildCard(_buildTextAndIconLabelsTabNavigator(2)) 120 builder: () => _buildCard(_buildTextAndIconLabelsTabNavigator(n++))
121 ),
122 new TabNavigatorView(
123 label: const TabLabel(text: 'SCROLL'),
124 builder: () => _buildCard(_buildScrollableTabNavigator(n++))
96 ) 125 )
97 ]; 126 ];
98 127
99 TabNavigator tabNavigator = _buildTabNavigator(3, views); 128 TabNavigator tabNavigator = _buildTabNavigator(n++, views);
100 129
101 ToolBar toolbar = new ToolBar( 130 ToolBar toolbar = new ToolBar(
102 center: new Text('Tabbed Navigator', style: typography.white.title) 131 center: new Text('Tabbed Navigator', style: typography.white.title)
103 ); 132 );
104 133
105 return new Scaffold( 134 return new Scaffold(
106 toolbar: toolbar, 135 toolbar: toolbar,
107 body: tabNavigator 136 body: tabNavigator
108 ); 137 );
109 } 138 }
110 } 139 }
111 140
112 void main() { 141 void main() {
113 runApp(new TabbedNavigatorApp()); 142 runApp(new TabbedNavigatorApp());
114 } 143 }
OLDNEW
« no previous file with comments | « no previous file | sky/sdk/lib/widgets/scrollable.dart » ('j') | sky/sdk/lib/widgets/scrollable.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698