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";
|
import "package:flutter/material.dart";
|
||||||
|
|
||||||
extension SchemeToTheme on ColorScheme {
|
extension SchemeToTheme on ColorScheme {
|
||||||
ThemeData get theme => .from(colorScheme: this).copyWith(
|
ThemeData getTheme(bool useDefaultFont) => .from(colorScheme: this).copyWith(
|
||||||
cardTheme: .new(color: primaryContainer),
|
cardTheme: .new(color: primaryContainer),
|
||||||
popupMenuTheme: .new(
|
popupMenuTheme: .new(
|
||||||
shape: RoundedRectangleBorder(borderRadius: .circular(16)),
|
shape: RoundedRectangleBorder(borderRadius: .circular(16)),
|
||||||
|
|
@ -11,7 +11,9 @@ extension SchemeToTheme on ColorScheme {
|
||||||
titleSpacing: 0,
|
titleSpacing: 0,
|
||||||
backgroundColor: surfaceContainerLow,
|
backgroundColor: surfaceContainerLow,
|
||||||
),
|
),
|
||||||
textTheme: ThemeData(
|
textTheme: useDefaultFont
|
||||||
|
? null
|
||||||
|
: ThemeData(
|
||||||
fontFamilyFallback: ["sans", "emoji"],
|
fontFamilyFallback: ["sans", "emoji"],
|
||||||
brightness: brightness,
|
brightness: brightness,
|
||||||
).textTheme,
|
).textTheme,
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import "package:nexus/controllers/client_controller.dart";
|
||||||
import "package:nexus/controllers/client_state_controller.dart";
|
import "package:nexus/controllers/client_state_controller.dart";
|
||||||
import "package:nexus/controllers/header_controller.dart";
|
import "package:nexus/controllers/header_controller.dart";
|
||||||
import "package:nexus/controllers/multi_provider_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/controllers/shared_prefs_controller.dart";
|
||||||
import "package:nexus/helpers/extensions/better_when.dart";
|
import "package:nexus/helpers/extensions/better_when.dart";
|
||||||
import "package:nexus/helpers/extensions/scheme_to_theme.dart";
|
import "package:nexus/helpers/extensions/scheme_to_theme.dart";
|
||||||
|
|
@ -90,20 +91,43 @@ class App extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => DynamicColorBuilder(
|
Widget build(BuildContext context) => DynamicColorBuilder(
|
||||||
builder: (lightDynamic, darkDynamic) => MaterialApp(
|
builder: (lightDynamic, darkDynamic) => Consumer(
|
||||||
|
builder: (context, ref, child) => MaterialApp(
|
||||||
navigatorKey: navigatorKey,
|
navigatorKey: navigatorKey,
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
// Use indigo to work around bugs in theme generation
|
// Use indigo to work around bugs in theme generation
|
||||||
theme: (lightDynamic ?? ColorScheme.fromSeed(seedColor: Colors.indigo))
|
theme: (lightDynamic ?? ColorScheme.fromSeed(seedColor: Colors.indigo))
|
||||||
.theme,
|
.getTheme(
|
||||||
|
ref
|
||||||
|
.watch(SettingsController.provider)
|
||||||
|
.maybeWhen(
|
||||||
|
orElse: () => true,
|
||||||
|
data: (settings) => settings.useSystemFont,
|
||||||
|
),
|
||||||
|
),
|
||||||
darkTheme:
|
darkTheme:
|
||||||
(darkDynamic ??
|
(darkDynamic ??
|
||||||
ColorScheme.fromSeed(
|
ColorScheme.fromSeed(
|
||||||
seedColor: Colors.indigo,
|
seedColor: Colors.indigo,
|
||||||
brightness: Brightness.dark,
|
brightness: Brightness.dark,
|
||||||
))
|
))
|
||||||
.theme,
|
.getTheme(
|
||||||
home: Scaffold(
|
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(
|
body: Consumer(
|
||||||
builder: (_, ref, _) => ref
|
builder: (_, ref, _) => ref
|
||||||
.watch(
|
.watch(
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ part "settings.g.dart";
|
||||||
abstract class Settings with _$Settings {
|
abstract class Settings with _$Settings {
|
||||||
const factory Settings({
|
const factory Settings({
|
||||||
@Default(ThemeMode.light) ThemeMode theme,
|
@Default(ThemeMode.light) ThemeMode theme,
|
||||||
@Default(true) bool useClientSideGenerations,
|
|
||||||
@Default(false) bool useSystemFont,
|
@Default(false) bool useSystemFont,
|
||||||
}) = _Settings;
|
}) = _Settings;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,21 +48,6 @@ class SettingsPage extends ConsumerWidget {
|
||||||
.onError(showError),
|
.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(
|
Setting(
|
||||||
title: "Use System Font",
|
title: "Use System Font",
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue