test
This commit is contained in:
parent
89057b48c2
commit
b2fd944293
4 changed files with 45 additions and 35 deletions
|
|
@ -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(),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in a new issue