WIP Themes: New light theme
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
part of '../main.dart';
|
||||
|
||||
class HAClientTheme {
|
||||
|
||||
@ -20,6 +20,44 @@ class HAClientTheme {
|
||||
button: TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
|
||||
);
|
||||
|
||||
static const _stateColors = {
|
||||
EntityState.on: Colors.amber,
|
||||
"auto": Colors.amber,
|
||||
EntityState.active: Colors.amber,
|
||||
EntityState.playing: Colors.amber,
|
||||
EntityState.paused: Colors.amber,
|
||||
"above_horizon": Colors.amber,
|
||||
EntityState.home: Colors.amber,
|
||||
EntityState.open: Colors.amber,
|
||||
EntityState.cleaning: Colors.amber,
|
||||
EntityState.returning: Colors.amber,
|
||||
EntityState.off: defaultStateColor,
|
||||
EntityState.closed: defaultStateColor,
|
||||
"below_horizon": defaultStateColor,
|
||||
"default": defaultStateColor,
|
||||
EntityState.idle: defaultStateColor,
|
||||
"heat": Colors.redAccent,
|
||||
"cool": Colors.lightBlue,
|
||||
EntityState.unavailable: Colors.black26,
|
||||
EntityState.unknown: Colors.black26,
|
||||
EntityState.alarm_disarmed: Colors.green,
|
||||
EntityState.alarm_armed_away: Colors.redAccent,
|
||||
EntityState.alarm_armed_custom_bypass: Colors.redAccent,
|
||||
EntityState.alarm_armed_home: Colors.redAccent,
|
||||
EntityState.alarm_armed_night: Colors.redAccent,
|
||||
EntityState.alarm_triggered: Colors.redAccent,
|
||||
EntityState.alarm_arming: Colors.amber,
|
||||
EntityState.alarm_disarming: Colors.amber,
|
||||
EntityState.alarm_pending: Colors.amber,
|
||||
};
|
||||
|
||||
static const defaultStateColor = Color.fromRGBO(68, 115, 158, 1.0);
|
||||
|
||||
static const badgeColors = {
|
||||
"default": Color.fromRGBO(223, 76, 30, 1.0),
|
||||
"binary_sensor": Color.fromRGBO(3, 155, 229, 1.0)
|
||||
};
|
||||
|
||||
static final HAClientTheme _instance = HAClientTheme
|
||||
._internal();
|
||||
|
||||
@ -29,7 +67,22 @@ class HAClientTheme {
|
||||
|
||||
HAClientTheme._internal();
|
||||
|
||||
final ThemeData lightTheme = ThemeData.light().copyWith(
|
||||
final ThemeData lightTheme = ThemeData.from(
|
||||
colorScheme: ColorScheme(
|
||||
primary: Color.fromRGBO(112, 154, 193, 1),
|
||||
primaryVariant: Color.fromRGBO(68, 115, 158, 1),
|
||||
secondary: Color.fromRGBO(253, 216, 53, 1),
|
||||
secondaryVariant: Color.fromRGBO(222, 181, 2, 1),
|
||||
background: Colors.white,
|
||||
surface: Colors.white,
|
||||
error: Colors.red,
|
||||
onPrimary: Colors.white,
|
||||
onSecondary: Colors.black87,
|
||||
onBackground: Colors.black87,
|
||||
onSurface: Colors.black87,
|
||||
onError: Colors.white,
|
||||
brightness: Brightness.light
|
||||
),
|
||||
textTheme: ThemeData.light().textTheme.copyWith(
|
||||
display1: textTheme.display1.copyWith(color: Colors.black54),
|
||||
display2: textTheme.display2.copyWith(color: Colors.redAccent),
|
||||
@ -61,4 +114,38 @@ class HAClientTheme {
|
||||
)
|
||||
);
|
||||
|
||||
Color stateColor(String state) {
|
||||
return _stateColors[state] ?? _stateColors["default"];
|
||||
}
|
||||
|
||||
charts.Color chartHistoryStateColor(String state, int id) {
|
||||
Color c = _stateColors[state];
|
||||
if (c != null) {
|
||||
return charts.Color(
|
||||
r: c.red,
|
||||
g: c.green,
|
||||
b: c.blue,
|
||||
a: c.alpha
|
||||
);
|
||||
} else {
|
||||
double r = id.toDouble() % 10;
|
||||
return charts.MaterialPalette.getOrderedPalettes(10)[r.round()].shadeDefault;
|
||||
}
|
||||
}
|
||||
|
||||
Color historyStateColor(String state, int id) {
|
||||
Color c = _stateColors[state];
|
||||
if (c != null) {
|
||||
return c;
|
||||
} else {
|
||||
if (id > -1) {
|
||||
double r = id.toDouble() % 10;
|
||||
charts.Color c1 = charts.MaterialPalette.getOrderedPalettes(10)[r.round()].shadeDefault;
|
||||
return Color.fromARGB(c1.a, c1.r, c1.g, c1.b);
|
||||
} else {
|
||||
return _stateColors[EntityState.on];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user