mirror of
https://github.com/asjqkkkk/flutter-todos.git
synced 2025-08-26 05:59:08 +08:00
94 lines
3.0 KiB
Dart
94 lines
3.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class ThemeUtil {
|
|
static ThemeUtil _instance;
|
|
|
|
static ThemeUtil getInstance() {
|
|
if (_instance == null) {
|
|
_instance = ThemeUtil._internal();
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
ThemeUtil._internal();
|
|
|
|
ThemeData getTheme(
|
|
String themeName,
|
|
) {
|
|
switch (themeName) {
|
|
case MyTheme.defaultTheme:
|
|
return _getThemeData(MyThemeColor.defaultColor);
|
|
break;
|
|
case MyTheme.darkTheme:
|
|
return ThemeData(
|
|
brightness: Brightness.dark,
|
|
appBarTheme: getAppBarTheme(Colors.grey));
|
|
break;
|
|
case MyTheme.coffeeTheme:
|
|
return _getThemeData(MyThemeColor.coffeeColor);
|
|
case MyTheme.cyanTheme:
|
|
return _getThemeData(MyThemeColor.cyanColor);
|
|
break;
|
|
case MyTheme.purpleTheme:
|
|
return _getThemeData(MyThemeColor.purpleColor);
|
|
break;
|
|
case MyTheme.greenTheme:
|
|
return _getThemeData(MyThemeColor.greenColor);
|
|
break;
|
|
case MyTheme.blueGrayTheme:
|
|
return _getThemeData(MyThemeColor.blueGrayColor);
|
|
break;
|
|
}
|
|
}
|
|
|
|
ThemeData _getThemeData(Color color) {
|
|
return ThemeData(
|
|
primaryColor: color,
|
|
primaryColorDark: _getDarkColor(color),
|
|
primaryColorLight: _getLightColor(color),
|
|
appBarTheme: getAppBarTheme(Colors.white));
|
|
}
|
|
|
|
Color _getDarkColor(Color color) {
|
|
int number = 20;
|
|
int red = color.red - number <= 0 ? color.red : color.red - number;
|
|
int green = color.green - number <= 0 ? color.green : color.green - number;
|
|
int blue = color.blue - number <= 0 ? color.blue : color.blue - number;
|
|
return Color.fromRGBO(red, green, blue, 1);
|
|
}
|
|
|
|
Color _getLightColor(Color color) {
|
|
int number = 30;
|
|
int red = color.red + number >= 255 ? color.red : color.red + number;
|
|
int green = color.green + number >= 255 ? color.green : color.green + number;
|
|
int blue = color.blue + number >= 255 ? color.blue : color.blue + number;
|
|
return Color.fromRGBO(red, green, blue, 1);
|
|
}
|
|
|
|
AppBarTheme getAppBarTheme(Color color) {
|
|
return AppBarTheme(
|
|
iconTheme: IconThemeData(color: color),
|
|
textTheme: TextTheme(title: TextStyle(color: color, fontSize: 20)));
|
|
}
|
|
}
|
|
|
|
class MyTheme {
|
|
static const String defaultTheme = "pink";
|
|
static const String darkTheme = "dark";
|
|
static const String coffeeTheme = "coffee";
|
|
static const String cyanTheme = "cyan";
|
|
static const String purpleTheme = "purple";
|
|
static const String greenTheme = "green";
|
|
static const String blueGrayTheme = "blueGray";
|
|
}
|
|
|
|
class MyThemeColor {
|
|
static const Color defaultColor = Color.fromRGBO(246, 200, 200, 1);
|
|
static const Color darkColor = Colors.grey;
|
|
static const Color coffeeColor = Color.fromRGBO(228, 183, 160, 1);
|
|
static const Color cyanColor = Color.fromRGBO(143, 227, 235, 1);
|
|
static const Color greenColor = Color.fromRGBO(151, 215, 178, 1);
|
|
static const Color purpleColor = Color.fromRGBO(205, 188, 255, 1);
|
|
static const Color blueGrayColor = Color.fromRGBO(135, 170, 171, 1);
|
|
}
|