From b2fd9442938560c1bb4b11d3154805a886afa373 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Thu, 16 Jul 2026 23:53:01 -0400 Subject: [PATCH] test --- lib/helpers/extensions/scheme_to_theme.dart | 12 +++-- lib/main.dart | 52 +++++++++++++++------ lib/models/settings.dart | 1 - lib/pages/settings_page.dart | 15 ------ 4 files changed, 45 insertions(+), 35 deletions(-) diff --git a/lib/helpers/extensions/scheme_to_theme.dart b/lib/helpers/extensions/scheme_to_theme.dart index b7d7972..6ac08c7 100644 --- a/lib/helpers/extensions/scheme_to_theme.dart +++ b/lib/helpers/extensions/scheme_to_theme.dart @@ -1,7 +1,7 @@ import "package:flutter/material.dart"; extension SchemeToTheme on ColorScheme { - ThemeData get theme => .from(colorScheme: this).copyWith( + ThemeData getTheme(bool useDefaultFont) => .from(colorScheme: this).copyWith( cardTheme: .new(color: primaryContainer), popupMenuTheme: .new( shape: RoundedRectangleBorder(borderRadius: .circular(16)), @@ -11,10 +11,12 @@ extension SchemeToTheme on ColorScheme { titleSpacing: 0, backgroundColor: surfaceContainerLow, ), - textTheme: ThemeData( - fontFamilyFallback: ["sans", "emoji"], - brightness: brightness, - ).textTheme, + textTheme: useDefaultFont + ? null + : ThemeData( + fontFamilyFallback: ["sans", "emoji"], + brightness: brightness, + ).textTheme, inputDecorationTheme: const InputDecorationTheme( border: OutlineInputBorder(), ), diff --git a/lib/main.dart b/lib/main.dart index f71776e..d568f6d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import "package:nexus/controllers/client_controller.dart"; import "package:nexus/controllers/client_state_controller.dart"; import "package:nexus/controllers/header_controller.dart"; import "package:nexus/controllers/multi_provider_controller.dart"; +import "package:nexus/controllers/settings_controller.dart"; import "package:nexus/controllers/shared_prefs_controller.dart"; import "package:nexus/helpers/extensions/better_when.dart"; import "package:nexus/helpers/extensions/scheme_to_theme.dart"; @@ -90,20 +91,43 @@ class App extends StatelessWidget { @override Widget build(BuildContext context) => DynamicColorBuilder( - builder: (lightDynamic, darkDynamic) => MaterialApp( - navigatorKey: navigatorKey, - debugShowCheckedModeBanner: false, - // Use indigo to work around bugs in theme generation - theme: (lightDynamic ?? ColorScheme.fromSeed(seedColor: Colors.indigo)) - .theme, - darkTheme: - (darkDynamic ?? - ColorScheme.fromSeed( - seedColor: Colors.indigo, - brightness: Brightness.dark, - )) - .theme, - home: Scaffold( + builder: (lightDynamic, darkDynamic) => Consumer( + builder: (context, ref, child) => MaterialApp( + navigatorKey: navigatorKey, + debugShowCheckedModeBanner: false, + // Use indigo to work around bugs in theme generation + theme: (lightDynamic ?? ColorScheme.fromSeed(seedColor: Colors.indigo)) + .getTheme( + ref + .watch(SettingsController.provider) + .maybeWhen( + orElse: () => true, + data: (settings) => settings.useSystemFont, + ), + ), + darkTheme: + (darkDynamic ?? + ColorScheme.fromSeed( + seedColor: Colors.indigo, + brightness: Brightness.dark, + )) + .getTheme( + ref + .watch(SettingsController.provider) + .maybeWhen( + orElse: () => true, + data: (settings) => settings.useSystemFont, + ), + ), + themeMode: ref + .watch(SettingsController.provider) + .maybeWhen( + data: (settings) => settings.theme, + orElse: () => ThemeMode.system, + ), + home: child, + ), + child: Scaffold( body: Consumer( builder: (_, ref, _) => ref .watch( diff --git a/lib/models/settings.dart b/lib/models/settings.dart index a9c7605..aafa23a 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -7,7 +7,6 @@ part "settings.g.dart"; abstract class Settings with _$Settings { const factory Settings({ @Default(ThemeMode.light) ThemeMode theme, - @Default(true) bool useClientSideGenerations, @Default(false) bool useSystemFont, }) = _Settings; diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart index 1ffe66c..3a4a3ff 100644 --- a/lib/pages/settings_page.dart +++ b/lib/pages/settings_page.dart @@ -48,21 +48,6 @@ class SettingsPage extends ConsumerWidget { .onError(showError), ), ), - Setting( - title: "Use Client Side Decorations", - description: - "On desktop, toggle between client-side or server-side decorations", - builder: (title, description) => SwitchListTile( - title: Text(title), - secondary: Icon(Icons.border_top), - subtitle: Text(description), - value: settings.useClientSideGenerations, - onChanged: (value) => ref - .watch(SettingsController.provider.notifier) - .set(settings.copyWith(useClientSideGenerations: value)) - .onError(showError), - ), - ), Setting( title: "Use System Font", description: