From 2a7829a2d01b450d7b86888cc2d9935156564b95 Mon Sep 17 00:00:00 2001 From: Hans Kokx Date: Tue, 29 Apr 2025 11:16:21 +0200 Subject: [PATCH] Updated theme example to set color of theme Signed-off-by: Hans Kokx --- example/lib/main.dart | 74 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 66 insertions(+), 8 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index fe6f5cc..1a76e5a 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -82,6 +82,16 @@ class HomeScreen extends StatefulWidget { class _HomeScreenState extends State { late final StreamSubscription _subscription; final List latestLogs = []; + final List themeColors = [ + Colors.red, + Colors.orange, + Colors.yellow, + Colors.green, + Colors.blue, + Colors.purple, + Colors.deepPurple, + ]; + @override Widget build(BuildContext context) { final bool isSignedIn = Arcane.auth.isSignedIn.value; @@ -106,7 +116,8 @@ class _HomeScreenState extends State { Column( children: [ Switch( - value: Arcane.theme.currentTheme == ThemeMode.dark, + value: + Arcane.theme.currentThemeMode == ThemeMode.dark, thumbIcon: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { @@ -116,14 +127,14 @@ class _HomeScreenState extends State { }), onChanged: (_) { final ThemeMode oldTheme = - Arcane.theme.currentTheme; + Arcane.theme.currentThemeMode; Arcane.theme.switchTheme(); Arcane.log( "Switching theme", metadata: { "followingSystemTheme": "${Arcane.theme.isFollowingSystemTheme}", - "newMode": Arcane.theme.currentTheme.name, + "newMode": Arcane.theme.currentThemeMode.name, "oldMode": oldTheme.name, }, ); @@ -136,7 +147,7 @@ class _HomeScreenState extends State { value: Arcane.theme.isFollowingSystemTheme, onChanged: (value) { final ThemeMode oldTheme = - Arcane.theme.currentTheme; + Arcane.theme.currentThemeMode; if (value == true) { Arcane.theme.followSystemTheme(context); Arcane.log( @@ -145,13 +156,13 @@ class _HomeScreenState extends State { "followingSystemTheme": "${Arcane.theme.isFollowingSystemTheme}", "newMode": - Arcane.theme.currentTheme.name, + Arcane.theme.currentThemeMode.name, "oldMode": oldTheme.name, }, ); } else { Arcane.theme.switchTheme( - themeMode: Arcane.theme.systemTheme, + themeMode: Arcane.theme.systemThemeMode, ); Arcane.log( "Switching theme", @@ -159,7 +170,7 @@ class _HomeScreenState extends State { "followingSystemTheme": "${Arcane.theme.isFollowingSystemTheme}", "newMode": - Arcane.theme.currentTheme.name, + Arcane.theme.currentThemeMode.name, "oldMode": oldTheme.name, }, ); @@ -171,8 +182,55 @@ class _HomeScreenState extends State { ), ], ), + SizedBox( + height: 20, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + spacing: 8, + children: [ + const Text("Color"), + Expanded( + child: ListView.separated( + itemCount: themeColors.length, + scrollDirection: Axis.horizontal, + separatorBuilder: (_, __) => + const SizedBox(width: 4), + itemBuilder: (context, index) { + return InkWell( + onTap: () { + if (Arcane.theme.currentThemeMode == + ThemeMode.dark) { + Arcane.theme.setDarkTheme( + ThemeData( + brightness: Brightness.dark, + colorSchemeSeed: themeColors[index], + ), + ); + } else if (Arcane + .theme.currentThemeMode == + ThemeMode.light) { + Arcane.theme.setLightTheme( + ThemeData( + brightness: Brightness.light, + colorSchemeSeed: themeColors[index], + ), + ); + } + }, + child: Container( + color: themeColors[index], + width: 20, + height: 20, + ), + ); + }, + ), + ), + ], + ), + ), Text( - "The current theme mode is ${context.themeMode.name} and\n" + "The current theme mode is ${context.themeMode.name} and " "is ${Arcane.theme.isFollowingSystemTheme ? "" : "not "}" "following the system theme.", ),