mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-03-11 17:25:32 +00:00
add blendLevel feature
This commit is contained in:
parent
2636d96ba5
commit
edf9958b8f
7 changed files with 84 additions and 12 deletions
|
|
@ -9,6 +9,7 @@ import 'package:mangayomi/models/model_manga.dart';
|
|||
import 'package:mangayomi/router/router.dart';
|
||||
import 'package:mangayomi/source/source_model.dart';
|
||||
import 'package:mangayomi/views/manga/reader/providers/reader_controller_provider.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/providers/blend_level_state_provider.dart';
|
||||
import 'views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart';
|
||||
import 'views/more/settings/appearance/providers/theme_mode_state_provider.dart';
|
||||
|
||||
|
|
@ -35,10 +36,12 @@ class MyApp extends ConsumerWidget {
|
|||
// This widget is the root of your application.
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final isThemeLight = ref.watch(themeModeStateProvider);
|
||||
final blendLevel = ref.watch(blendLevelStateProvider);
|
||||
ThemeData themeLight = FlexThemeData.light(
|
||||
colors: ref.watch(flexSchemeColorStateProvider),
|
||||
surfaceMode: FlexSurfaceMode.highScaffoldLevelSurface,
|
||||
blendLevel: 10,
|
||||
blendLevel: blendLevel.toInt(),
|
||||
appBarOpacity: 0.00,
|
||||
subThemesData: const FlexSubThemesData(
|
||||
blendOnLevel: 24,
|
||||
|
|
@ -56,7 +59,7 @@ class MyApp extends ConsumerWidget {
|
|||
ThemeData themeDark = FlexThemeData.dark(
|
||||
colors: ref.watch(flexSchemeColorStateProvider),
|
||||
surfaceMode: FlexSurfaceMode.highScaffoldLevelSurface,
|
||||
blendLevel: 10,
|
||||
blendLevel: blendLevel.toInt(),
|
||||
appBarOpacity: 0.00,
|
||||
subThemesData: const FlexSubThemesData(
|
||||
blendOnLevel: 24,
|
||||
|
|
@ -73,7 +76,7 @@ class MyApp extends ConsumerWidget {
|
|||
);
|
||||
final router = ref.watch(routerProvider);
|
||||
return MaterialApp.router(
|
||||
theme: ref.watch(themeModeStateProvider) ? themeLight : themeDark,
|
||||
theme: isThemeLight ? themeLight : themeDark,
|
||||
debugShowCheckedModeBanner: false,
|
||||
routeInformationParser: router.routeInformationParser,
|
||||
routerDelegate: router.routerDelegate,
|
||||
|
|
@ -82,9 +85,3 @@ class MyApp extends ConsumerWidget {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ThemeAA {
|
||||
static const List<FlexSchemeData> schemes = <FlexSchemeData>[
|
||||
...FlexColor.schemesList,
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/dark_mode_button.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/theme_selector.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/widgets/blend_level_slider.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/widgets/dark_mode_button.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/widgets/theme_selector.dart';
|
||||
|
||||
class AppearanceScreen extends ConsumerWidget {
|
||||
const AppearanceScreen({super.key});
|
||||
|
|
@ -13,7 +14,7 @@ class AppearanceScreen extends ConsumerWidget {
|
|||
title: const Text("Appearance"),
|
||||
),
|
||||
body: Column(
|
||||
children: const [DarkModeButton(), ThemeSelector()],
|
||||
children: const [DarkModeButton(), ThemeSelector(), BlendLevelSlider()],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
import 'package:mangayomi/providers/hive_provider.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'blend_level_state_provider.g.dart';
|
||||
|
||||
@riverpod
|
||||
class BlendLevelState extends _$BlendLevelState {
|
||||
@override
|
||||
double build() {
|
||||
return ref.watch(hiveBoxSettings).get('blendLevel', defaultValue: 10.0)!;
|
||||
}
|
||||
|
||||
void setBlendLevel(double blendLevelValue) {
|
||||
state = blendLevelValue;
|
||||
ref.watch(hiveBoxSettings).put('blendLevel', state);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'blend_level_state_provider.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$blendLevelStateHash() => r'11d6ef7888230e249039d24cea788b3a9b4fb6e2';
|
||||
|
||||
/// See also [BlendLevelState].
|
||||
@ProviderFor(BlendLevelState)
|
||||
final blendLevelStateProvider =
|
||||
AutoDisposeNotifierProvider<BlendLevelState, double>.internal(
|
||||
BlendLevelState.new,
|
||||
name: r'blendLevelStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$blendLevelStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$BlendLevelState = AutoDisposeNotifier<double>;
|
||||
// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
import 'dart:math';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/views/more/settings/appearance/providers/blend_level_state_provider.dart';
|
||||
|
||||
class BlendLevelSlider extends ConsumerWidget {
|
||||
const BlendLevelSlider({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final blendLevel = ref.watch(blendLevelStateProvider);
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(left: 22),
|
||||
child: Text(
|
||||
'Color blend Level',
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
Slider(
|
||||
min: 0.0,
|
||||
max: 40.0,
|
||||
divisions: max(40 - 1, 1),
|
||||
value: blendLevel,
|
||||
onChanged: (value) {
|
||||
ref.read(blendLevelStateProvider.notifier).setBlendLevel(value);
|
||||
}),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue