From 56f0557d9464b60f53f1611cc32143a29e23dec1 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 9 May 2026 15:47:41 -0400 Subject: [PATCH] feat(flutter): MinstrelApp watches themeMode + offers darkTheme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MaterialApp now provides both light and dark themes plus a themeMode bound to themeModeProvider. ThemeMode.system rebuilds the tree automatically when the OS toggles brightness — no manual listener needed. While themeModeProvider is loading (storage read in flight), falls back to AppThemeMode.system, which inherits the OS setting. Co-Authored-By: Claude Opus 4.7 (1M context) --- flutter_client/lib/app.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flutter_client/lib/app.dart b/flutter_client/lib/app.dart index f6884573..4f6b2d65 100644 --- a/flutter_client/lib/app.dart +++ b/flutter_client/lib/app.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'shared/routing.dart'; import 'theme/theme_data.dart'; +import 'theme/theme_mode_provider.dart'; class MinstrelApp extends ConsumerWidget { const MinstrelApp({super.key}); @@ -10,9 +11,12 @@ class MinstrelApp extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final router = ref.watch(routerProvider); + final mode = ref.watch(themeModeProvider).value ?? AppThemeMode.system; return MaterialApp.router( title: 'Minstrel', - theme: buildThemeData(), + theme: buildLightTheme(), + darkTheme: buildDarkTheme(), + themeMode: mode.materialMode, routerConfig: router, ); }