TWidgetTheme.from constructor
TWidgetTheme.from(
- BuildContext context,
- Color color,
- TVariant type
Implementation
factory TWidgetTheme.from(BuildContext context, Color color, TVariant type) {
final isDarkMode = context.isDarkMode;
Color shade(int value) => color.shade(value);
Color alpha(Color color, int a) => color.withAlpha(a);
return switch (type) {
TVariant.solid => TWidgetTheme(
container: shade(400),
containerVariant: alpha(shade(400), 200),
onContainer: shade(50),
onContainerVariant: shade(50),
shadow: alpha(shade(900), 35),
),
TVariant.tonal => TWidgetTheme(
container: isDarkMode ? shade(700) : shade(50),
containerVariant: isDarkMode ? shade(800) : shade(100),
onContainer: isDarkMode ? shade(100) : shade(400),
onContainerVariant: isDarkMode ? shade(300) : shade(500),
shadow: alpha(shade(600), 35),
),
TVariant.outline => TWidgetTheme(
container: Colors.transparent,
containerVariant: Colors.transparent,
onContainer: shade(400),
onContainerVariant: isDarkMode ? shade(300) : shade(500),
outline: shade(300),
outlineVariant: shade(400),
shadow: alpha(shade(400), 35),
),
TVariant.softOutline => TWidgetTheme(
container: Colors.transparent,
containerVariant: isDarkMode ? shade(700) : shade(50),
onContainer: shade(400),
onContainerVariant: isDarkMode ? shade(200) : shade(500),
outline: shade(300),
outlineVariant: isDarkMode ? shade(400) : shade(200),
shadow: alpha(shade(400), 35),
),
TVariant.filledOutline => TWidgetTheme(
container: Colors.transparent,
containerVariant: shade(400),
onContainer: shade(400),
onContainerVariant: shade(50),
outline: shade(300),
shadow: alpha(shade(400), 35),
),
TVariant.text => TWidgetTheme(
container: Colors.transparent,
containerVariant: Colors.transparent,
onContainer: shade(400),
onContainerVariant: isDarkMode ? shade(300) : shade(500),
),
TVariant.softText => TWidgetTheme(
container: Colors.transparent,
containerVariant: isDarkMode ? shade(700) : shade(50),
onContainer: shade(400),
onContainerVariant: isDarkMode ? shade(300) : shade(500),
),
TVariant.filledText => TWidgetTheme(
container: Colors.transparent,
containerVariant: shade(400),
onContainer: shade(400),
onContainerVariant: shade(50),
)
};
}