add blendLevel feature

This commit is contained in:
kodjodevf 2023-04-11 11:27:48 +01:00
parent 2636d96ba5
commit edf9958b8f
7 changed files with 84 additions and 12 deletions

View file

@ -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,
];
}

View file

@ -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()],
),
);
}

View file

@ -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);
}
}

View file

@ -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

View file

@ -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);
}),
],
);
}
}