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

Unified Diff: sky/sdk/lib/widgets/tabs.dart

Issue 1213873002: Use Theme to define the colors and TextStyles for Tab, TabBar (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/widgets/tabs.dart ('k') | sky/tests/examples/tabs.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/sdk/lib/widgets/tabs.dart
diff --git a/sky/sdk/lib/widgets/tabs.dart b/sky/sdk/lib/widgets/tabs.dart
index 9d8af98fa98666f5fb7fbc5ccdc51cf15857e544..741594d2bf5bde7b5d2775a985ce93a26f829307 100644
--- a/sky/sdk/lib/widgets/tabs.dart
+++ b/sky/sdk/lib/widgets/tabs.dart
@@ -3,15 +3,13 @@
// found in the LICENSE file.
import 'dart:math' as math;
-import 'dart:sky' as sky;
-import 'package:sky/painting/text_style.dart';
import 'package:sky/rendering/box.dart';
import 'package:sky/rendering/object.dart';
-import 'package:sky/theme/colors.dart';
import 'package:sky/widgets/basic.dart';
import 'package:sky/widgets/icon.dart';
import 'package:sky/widgets/ink_well.dart';
+import 'package:sky/widgets/theme.dart';
import 'package:sky/widgets/widget.dart';
typedef void SelectedIndexChanged(int selectedIndex);
@@ -20,6 +18,7 @@ const double _kTabHeight = 46.0;
const double _kTabIndicatorHeight = 2.0;
const double _kTabBarHeight = _kTabHeight + _kTabIndicatorHeight;
const double _kMinTabWidth = 72.0;
+const int _kTabIconSize = 24;
class TabBarParentData extends BoxParentData with
ContainerParentDataMixin<RenderBox> { }
@@ -37,7 +36,25 @@ class RenderTabBar extends RenderBox with
}
}
- void setParentData(RenderBox child) {
+ Color _backgroundColor;
+ Color get backgroundColor => _backgroundColor;
+ void set backgroundColor(Color value) {
+ if (_backgroundColor != value) {
+ _backgroundColor = value;
+ markNeedsPaint();
+ }
+ }
+
+ Color _indicatorColor;
+ Color get indicatorColor => _indicatorColor;
+ void set indicatorColor(Color value) {
+ if (_indicatorColor != value) {
+ _indicatorColor = value;
+ markNeedsPaint();
+ }
+ }
+
+ void setupParentData(RenderBox child) {
if (child.parentData is! TabBarParentData)
child.parentData = new TabBarParentData();
}
@@ -119,16 +136,20 @@ class RenderTabBar extends RenderBox with
}
void _paintIndicator(RenderCanvas canvas, RenderBox selectedTab) {
+ if (indicatorColor == null)
+ return;
+
var size = new Size(selectedTab.size.width, _kTabIndicatorHeight);
var point = new Point(selectedTab.parentData.position.x, _kTabHeight);
Rect rect = new Rect.fromPointAndSize(point, size);
- // TODO(hansmuller): indicator color should be based on the theme.
- canvas.drawRect(rect, new Paint()..color = White);
+ canvas.drawRect(rect, new Paint()..color = indicatorColor);
}
void paint(RenderCanvas canvas) {
- Rect rect = new Rect.fromSize(size);
- canvas.drawRect(rect, new Paint()..color = Blue[500]);
+ if (backgroundColor != null) {
+ Rect rect = new Rect.fromSize(size);
+ canvas.drawRect(rect, new Paint()..color = backgroundColor);
+ }
int index = 0;
RenderBox child = firstChild;
@@ -143,10 +164,17 @@ class RenderTabBar extends RenderBox with
}
class TabBarWrapper extends MultiChildRenderObjectWrapper {
- TabBarWrapper(List<Widget> children, this.selectedIndex, { String key })
- : super(key: key, children: children);
+ TabBarWrapper({
+ List<Widget> children,
+ this.selectedIndex,
+ this.backgroundColor,
+ this.indicatorColor,
+ String key
+ }) : super(key: key, children: children);
final int selectedIndex;
+ final Color backgroundColor;
+ final Color indicatorColor;
RenderTabBar get root => super.root;
RenderTabBar createNode() => new RenderTabBar();
@@ -154,6 +182,8 @@ class TabBarWrapper extends MultiChildRenderObjectWrapper {
void syncRenderObject(Widget old) {
super.syncRenderObject(old);
root.selectedIndex = selectedIndex;
+ root.backgroundColor = backgroundColor;
+ root.indicatorColor = indicatorColor;
}
}
@@ -176,18 +206,14 @@ class Tab extends Component {
final TabLabel label;
final bool selected;
- // TODO(hansmuller): use themes here.
- static const TextStyle selectedStyle = const TextStyle(color: const Color(0xFFFFFFFF));
- static const TextStyle style = const TextStyle(color: const Color(0xB2FFFFFF));
-
Widget _buildLabelText() {
assert(label.text != null);
- return new Text(label.text, style: style);
+ return new Text(label.text, style: Theme.of(this).toolbarText.button);
}
Widget _buildLabelIcon() {
assert(label.icon != null);
- return new Icon(type: label.icon, size: 24);
+ return new Icon(type: label.icon, size: _kTabIconSize);
}
Widget build() {
@@ -254,7 +280,12 @@ class TabBar extends Component {
for (int tabIndex = 0; tabIndex < labels.length; tabIndex++) {
tabs.add(_toTab(labels[tabIndex], tabIndex));
}
- return new TabBarWrapper(tabs, selectedIndex);
+ return new TabBarWrapper(
+ children: tabs,
+ selectedIndex: selectedIndex,
+ backgroundColor: Theme.of(this).primary[500],
+ indicatorColor: Theme.of(this).accent[200]
+ );
}
}
« no previous file with comments | « sky/examples/widgets/tabs.dart ('k') | sky/tests/examples/tabs.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698