mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-05-11 16:40:36 +00:00
library filter features
This commit is contained in:
parent
ed367c6786
commit
82e48642ad
10 changed files with 1122 additions and 385 deletions
|
|
@ -7,7 +7,7 @@ part of 'get_manga_chapter_url.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$getMangaChapterUrlHash() =>
|
||||
r'128242519581990fb05796608bc1e746d0e885df';
|
||||
r'7645294b8966c7069d9c2e4528e1fee512bb1694';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:mangayomi/views/library/providers/library_state_provider.dart';
|
|||
import 'package:mangayomi/views/library/search_text_form_field.dart';
|
||||
import 'package:mangayomi/views/library/widgets/library_gridview_widget.dart';
|
||||
import 'package:mangayomi/views/library/widgets/library_listview_widget.dart';
|
||||
import 'package:mangayomi/views/manga/detail/widgets/chapter_filter_list_tile_widget.dart';
|
||||
|
||||
class LibraryScreen extends ConsumerStatefulWidget {
|
||||
const LibraryScreen({super.key});
|
||||
|
|
@ -24,41 +25,15 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
|
|||
List<ModelManga> entriesFilter = [];
|
||||
final _textEditingController = TextEditingController();
|
||||
|
||||
List<ModelManga> bookmark() {
|
||||
List<ModelManga> mang = [];
|
||||
for (var entry in entries) {
|
||||
final d =
|
||||
entry.chapters!.where((element) => element.isBookmarked == true);
|
||||
List<ModelChapters> chap = [];
|
||||
for (var a in d) {
|
||||
chap.add(a);
|
||||
}
|
||||
mang.add(ModelManga(
|
||||
source: entry.source,
|
||||
author: entry.author,
|
||||
favorite: entry.favorite,
|
||||
genre: entry.genre,
|
||||
imageUrl: entry.imageUrl,
|
||||
lang: entry.lang,
|
||||
link: entry.link,
|
||||
name: entry.name,
|
||||
status: entry.status,
|
||||
description: entry.description,
|
||||
dateAdded: entry.dateAdded,
|
||||
lastUpdate: entry.lastUpdate,
|
||||
category: entry.category,
|
||||
lastRead: entry.lastRead,
|
||||
chapters: chap));
|
||||
}
|
||||
return mang;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final reverse = ref.watch(libraryReverseListStateProvider);
|
||||
final displayType = ref
|
||||
.read(libraryDisplayTypeStateProvider.notifier)
|
||||
.getLibraryDisplayTypeValue(ref.watch(libraryDisplayTypeStateProvider));
|
||||
final isNotFiltering = ref
|
||||
.read(mangaFilterResultStateProvider(mangaList: entries).notifier)
|
||||
.isNotFiltering();
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
elevation: 0,
|
||||
|
|
@ -73,12 +48,7 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
|
|||
isSearch
|
||||
? SeachFormTextField(
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
entriesFilter = entries
|
||||
.where((element) =>
|
||||
element.name!.toLowerCase().contains(value))
|
||||
.toList();
|
||||
});
|
||||
setState(() {});
|
||||
},
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
|
|
@ -108,8 +78,9 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
|
|||
onPressed: () {
|
||||
_showDraggableMenu();
|
||||
},
|
||||
icon: const Icon(
|
||||
icon: Icon(
|
||||
Icons.filter_list_sharp,
|
||||
color: isNotFiltering ? null : Colors.yellow,
|
||||
)),
|
||||
PopupMenuButton(
|
||||
itemBuilder: (context) {
|
||||
|
|
@ -125,13 +96,19 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
|
|||
valueListenable: ref.watch(hiveBoxManga).listenable(),
|
||||
builder: (context, value, child) {
|
||||
entries = value.values.where((element) => element.favorite).toList();
|
||||
final entriesManga = _textEditingController.text.isNotEmpty
|
||||
? entriesFilter
|
||||
: reverse
|
||||
? entries.reversed.toList()
|
||||
: entries;
|
||||
final data =
|
||||
ref.watch(mangaFilterResultStateProvider(mangaList: entries));
|
||||
entriesFilter = _textEditingController.text.isNotEmpty
|
||||
? data
|
||||
.where((element) => element.name!
|
||||
.toLowerCase()
|
||||
.contains(_textEditingController.text.toLowerCase()))
|
||||
.toList()
|
||||
: data;
|
||||
final entriesManga =
|
||||
reverse ? entriesFilter.reversed.toList() : entriesFilter;
|
||||
|
||||
if (entries.isNotEmpty || entriesFilter.isNotEmpty) {
|
||||
if (entriesFilter.isNotEmpty) {
|
||||
return displayType == DisplayType.list
|
||||
? LibraryListViewWidget(
|
||||
entriesManga: entriesManga,
|
||||
|
|
@ -181,7 +158,74 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
|
|||
Flexible(
|
||||
child:
|
||||
TabBarView(controller: tabBarController, children: [
|
||||
const Center(child: Text("soon")),
|
||||
Consumer(builder: (context, ref, chil) {
|
||||
return Column(
|
||||
children: [
|
||||
ListTileChapterFilter(
|
||||
label: "Downloaded",
|
||||
type: ref.watch(
|
||||
mangaFilterDownloadedStateProvider(
|
||||
mangaList: entries)),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
entriesFilter = ref
|
||||
.read(
|
||||
mangaFilterDownloadedStateProvider(
|
||||
mangaList: entries)
|
||||
.notifier)
|
||||
.update();
|
||||
});
|
||||
}),
|
||||
ListTileChapterFilter(
|
||||
label: "Unread",
|
||||
type: ref.watch(
|
||||
mangaFilterUnreadStateProvider(
|
||||
mangaList: entries)),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
entriesFilter = ref
|
||||
.read(
|
||||
mangaFilterUnreadStateProvider(
|
||||
mangaList: entries)
|
||||
.notifier)
|
||||
.update();
|
||||
});
|
||||
}),
|
||||
ListTileChapterFilter(
|
||||
label: "Started",
|
||||
type: ref.watch(
|
||||
mangaFilterStartedStateProvider(
|
||||
mangaList: entries)),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
entriesFilter = ref
|
||||
.read(
|
||||
mangaFilterStartedStateProvider(
|
||||
mangaList: entries)
|
||||
.notifier)
|
||||
.update();
|
||||
});
|
||||
}),
|
||||
ListTileChapterFilter(
|
||||
label: "Bookmarked",
|
||||
type: ref.watch(
|
||||
mangaFilterBookmarkedStateProvider(
|
||||
mangaList: entries)),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
entriesFilter = ref
|
||||
.read(
|
||||
mangaFilterBookmarkedStateProvider(
|
||||
mangaList: entries)
|
||||
.notifier)
|
||||
.update();
|
||||
});
|
||||
|
||||
// _refreshData();
|
||||
}),
|
||||
],
|
||||
);
|
||||
}),
|
||||
Consumer(builder: (context, ref, chil) {
|
||||
final reverse =
|
||||
ref.watch(libraryReverseListStateProvider);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:mangayomi/models/model_manga.dart';
|
||||
import 'package:mangayomi/providers/hive_provider.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'library_state_provider.g.dart';
|
||||
|
|
@ -58,3 +59,374 @@ enum DisplayType {
|
|||
coverOnlyGrid,
|
||||
list,
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class MangaFilterDownloadedState extends _$MangaFilterDownloadedState {
|
||||
@override
|
||||
int build({required List<ModelManga> mangaList}) {
|
||||
state = getType();
|
||||
return getType();
|
||||
}
|
||||
|
||||
int getType() {
|
||||
return ref
|
||||
.watch(hiveBoxSettings)
|
||||
.get("filterMangaDownload", defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put("filterMangaDownload", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
List<ModelManga> getData() {
|
||||
if (getType() == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
final modelChapDownload = ref
|
||||
.watch(hiveBoxMangaDownloads)
|
||||
.get(chap.name, defaultValue: null);
|
||||
if (modelChapDownload != null &&
|
||||
modelChapDownload.isDownload == true) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
|
||||
return data;
|
||||
} else if (getType() == 2) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
final modelChapDownload = ref
|
||||
.watch(hiveBoxMangaDownloads)
|
||||
.get(chap.name, defaultValue: null);
|
||||
if (modelChapDownload == null ||
|
||||
modelChapDownload.isDownload == false) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
return data;
|
||||
} else {
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelManga> update() {
|
||||
if (state == 0) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
final modelChapDownload = ref
|
||||
.watch(hiveBoxMangaDownloads)
|
||||
.get(chap.name, defaultValue: null);
|
||||
if (modelChapDownload != null &&
|
||||
modelChapDownload.isDownload == true) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
setType(1);
|
||||
return data;
|
||||
} else if (state == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
final modelChapDownload = ref
|
||||
.watch(hiveBoxMangaDownloads)
|
||||
.get(chap.name, defaultValue: null);
|
||||
if (modelChapDownload == null ||
|
||||
modelChapDownload.isDownload == false) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
setType(2);
|
||||
return data;
|
||||
} else {
|
||||
setType(0);
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class MangaFilterUnreadState extends _$MangaFilterUnreadState {
|
||||
@override
|
||||
int build({required List<ModelManga> mangaList}) {
|
||||
state = getType();
|
||||
return getType();
|
||||
}
|
||||
|
||||
int getType() {
|
||||
return ref.watch(hiveBoxSettings).get("filterMangaUnread", defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put("filterMangaUnread", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
List<ModelManga> getData() {
|
||||
if (getType() == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
return data;
|
||||
} else if (getType() == 2) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
return data;
|
||||
} else {
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelManga> update() {
|
||||
if (state == 0) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
setType(1);
|
||||
return data;
|
||||
} else if (state == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
setType(2);
|
||||
return data;
|
||||
} else {
|
||||
setType(0);
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class MangaFilterStartedState extends _$MangaFilterStartedState {
|
||||
@override
|
||||
int build({required List<ModelManga> mangaList}) {
|
||||
state = getType();
|
||||
return getType();
|
||||
}
|
||||
|
||||
int getType() {
|
||||
return ref.watch(hiveBoxSettings).get("filterMangaStated", defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put("filterMangaStated", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
List<ModelManga> getData() {
|
||||
if (getType() == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
return data;
|
||||
} else if (getType() == 2) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
return data;
|
||||
} else {
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelManga> update() {
|
||||
if (state == 0) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
setType(1);
|
||||
return data;
|
||||
} else if (state == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isRead) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
setType(2);
|
||||
return data;
|
||||
} else {
|
||||
setType(0);
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class MangaFilterBookmarkedState extends _$MangaFilterBookmarkedState {
|
||||
@override
|
||||
int build({required List<ModelManga> mangaList}) {
|
||||
state = getType();
|
||||
return getType();
|
||||
}
|
||||
|
||||
int getType() {
|
||||
return ref
|
||||
.watch(hiveBoxSettings)
|
||||
.get("filterMangaBookMarked", defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put("filterMangaBookMarked", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
List<ModelManga> getData() {
|
||||
if (getType() == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isBookmarked) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
return data;
|
||||
} else if (getType() == 2) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isBookmarked) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
return data;
|
||||
} else {
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelManga> update() {
|
||||
if (state == 0) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (chap.isBookmarked) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.isNotEmpty;
|
||||
}).toList();
|
||||
setType(1);
|
||||
return data;
|
||||
} else if (state == 1) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
for (var chap in element.chapters!) {
|
||||
if (!chap.isBookmarked) {
|
||||
list.add(true);
|
||||
}
|
||||
}
|
||||
return list.length == element.chapters!.length;
|
||||
}).toList();
|
||||
setType(2);
|
||||
return data;
|
||||
} else {
|
||||
setType(0);
|
||||
return mangaList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class MangaFilterResultState extends _$MangaFilterResultState {
|
||||
@override
|
||||
List<ModelManga> build({required List<ModelManga> mangaList}) {
|
||||
final data1 = ref
|
||||
.read(mangaFilterDownloadedStateProvider(mangaList: mangaList).notifier)
|
||||
.getData();
|
||||
|
||||
final data2 = ref
|
||||
.read(mangaFilterUnreadStateProvider(mangaList: data1).notifier)
|
||||
.getData();
|
||||
|
||||
final data3 = ref
|
||||
.read(mangaFilterStartedStateProvider(mangaList: data2).notifier)
|
||||
.getData();
|
||||
final data4 = ref
|
||||
.read(mangaFilterBookmarkedStateProvider(mangaList: data3).notifier)
|
||||
.getData();
|
||||
|
||||
return data4;
|
||||
}
|
||||
|
||||
bool isNotFiltering() {
|
||||
final downloadFilterType = ref
|
||||
.read(mangaFilterDownloadedStateProvider(mangaList: mangaList).notifier)
|
||||
.getType();
|
||||
final unreadFilterType = ref
|
||||
.read(mangaFilterUnreadStateProvider(mangaList: mangaList).notifier)
|
||||
.getType();
|
||||
final startedFilterType = ref
|
||||
.read(mangaFilterStartedStateProvider(mangaList: mangaList).notifier)
|
||||
.getType();
|
||||
final bookmarkedFilterType = ref
|
||||
.read(mangaFilterBookmarkedStateProvider(mangaList: mangaList).notifier)
|
||||
.getType();
|
||||
return downloadFilterType == 0 &&
|
||||
unreadFilterType == 0 &&
|
||||
startedFilterType == 0 &&
|
||||
bookmarkedFilterType == 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,4 +40,519 @@ final libraryDisplayTypeStateProvider =
|
|||
);
|
||||
|
||||
typedef _$LibraryDisplayTypeState = AutoDisposeNotifier<String>;
|
||||
String _$mangaFilterDownloadedStateHash() =>
|
||||
r'12b1cb7b473e6556ea9c1a2f9c7bf44017076ff4';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
_SystemHash._();
|
||||
|
||||
static int combine(int hash, int value) {
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + value);
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
|
||||
return hash ^ (hash >> 6);
|
||||
}
|
||||
|
||||
static int finish(int hash) {
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
|
||||
// ignore: parameter_assignments
|
||||
hash = hash ^ (hash >> 11);
|
||||
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _$MangaFilterDownloadedState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final List<ModelManga> mangaList;
|
||||
|
||||
int build({
|
||||
required List<ModelManga> mangaList,
|
||||
});
|
||||
}
|
||||
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
@ProviderFor(MangaFilterDownloadedState)
|
||||
const mangaFilterDownloadedStateProvider = MangaFilterDownloadedStateFamily();
|
||||
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
class MangaFilterDownloadedStateFamily extends Family<int> {
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
const MangaFilterDownloadedStateFamily();
|
||||
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
MangaFilterDownloadedStateProvider call({
|
||||
required List<ModelManga> mangaList,
|
||||
}) {
|
||||
return MangaFilterDownloadedStateProvider(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
MangaFilterDownloadedStateProvider getProviderOverride(
|
||||
covariant MangaFilterDownloadedStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaList: provider.mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'mangaFilterDownloadedStateProvider';
|
||||
}
|
||||
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
class MangaFilterDownloadedStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<MangaFilterDownloadedState, int> {
|
||||
/// See also [MangaFilterDownloadedState].
|
||||
MangaFilterDownloadedStateProvider({
|
||||
required this.mangaList,
|
||||
}) : super.internal(
|
||||
() => MangaFilterDownloadedState()..mangaList = mangaList,
|
||||
from: mangaFilterDownloadedStateProvider,
|
||||
name: r'mangaFilterDownloadedStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaFilterDownloadedStateHash,
|
||||
dependencies: MangaFilterDownloadedStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
MangaFilterDownloadedStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final List<ModelManga> mangaList;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaFilterDownloadedStateProvider &&
|
||||
other.mangaList == mangaList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
|
||||
@override
|
||||
int runNotifierBuild(
|
||||
covariant MangaFilterDownloadedState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaFilterUnreadStateHash() =>
|
||||
r'4b9172bbb95ebca0759946328b1fbdacf07392b1';
|
||||
|
||||
abstract class _$MangaFilterUnreadState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final List<ModelManga> mangaList;
|
||||
|
||||
int build({
|
||||
required List<ModelManga> mangaList,
|
||||
});
|
||||
}
|
||||
|
||||
/// See also [MangaFilterUnreadState].
|
||||
@ProviderFor(MangaFilterUnreadState)
|
||||
const mangaFilterUnreadStateProvider = MangaFilterUnreadStateFamily();
|
||||
|
||||
/// See also [MangaFilterUnreadState].
|
||||
class MangaFilterUnreadStateFamily extends Family<int> {
|
||||
/// See also [MangaFilterUnreadState].
|
||||
const MangaFilterUnreadStateFamily();
|
||||
|
||||
/// See also [MangaFilterUnreadState].
|
||||
MangaFilterUnreadStateProvider call({
|
||||
required List<ModelManga> mangaList,
|
||||
}) {
|
||||
return MangaFilterUnreadStateProvider(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
MangaFilterUnreadStateProvider getProviderOverride(
|
||||
covariant MangaFilterUnreadStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaList: provider.mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'mangaFilterUnreadStateProvider';
|
||||
}
|
||||
|
||||
/// See also [MangaFilterUnreadState].
|
||||
class MangaFilterUnreadStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<MangaFilterUnreadState, int> {
|
||||
/// See also [MangaFilterUnreadState].
|
||||
MangaFilterUnreadStateProvider({
|
||||
required this.mangaList,
|
||||
}) : super.internal(
|
||||
() => MangaFilterUnreadState()..mangaList = mangaList,
|
||||
from: mangaFilterUnreadStateProvider,
|
||||
name: r'mangaFilterUnreadStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaFilterUnreadStateHash,
|
||||
dependencies: MangaFilterUnreadStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
MangaFilterUnreadStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final List<ModelManga> mangaList;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaFilterUnreadStateProvider &&
|
||||
other.mangaList == mangaList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
|
||||
@override
|
||||
int runNotifierBuild(
|
||||
covariant MangaFilterUnreadState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaFilterStartedStateHash() =>
|
||||
r'9b3c27078f42f624e3f3fdd255573a3279a4efed';
|
||||
|
||||
abstract class _$MangaFilterStartedState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final List<ModelManga> mangaList;
|
||||
|
||||
int build({
|
||||
required List<ModelManga> mangaList,
|
||||
});
|
||||
}
|
||||
|
||||
/// See also [MangaFilterStartedState].
|
||||
@ProviderFor(MangaFilterStartedState)
|
||||
const mangaFilterStartedStateProvider = MangaFilterStartedStateFamily();
|
||||
|
||||
/// See also [MangaFilterStartedState].
|
||||
class MangaFilterStartedStateFamily extends Family<int> {
|
||||
/// See also [MangaFilterStartedState].
|
||||
const MangaFilterStartedStateFamily();
|
||||
|
||||
/// See also [MangaFilterStartedState].
|
||||
MangaFilterStartedStateProvider call({
|
||||
required List<ModelManga> mangaList,
|
||||
}) {
|
||||
return MangaFilterStartedStateProvider(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
MangaFilterStartedStateProvider getProviderOverride(
|
||||
covariant MangaFilterStartedStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaList: provider.mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'mangaFilterStartedStateProvider';
|
||||
}
|
||||
|
||||
/// See also [MangaFilterStartedState].
|
||||
class MangaFilterStartedStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<MangaFilterStartedState, int> {
|
||||
/// See also [MangaFilterStartedState].
|
||||
MangaFilterStartedStateProvider({
|
||||
required this.mangaList,
|
||||
}) : super.internal(
|
||||
() => MangaFilterStartedState()..mangaList = mangaList,
|
||||
from: mangaFilterStartedStateProvider,
|
||||
name: r'mangaFilterStartedStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaFilterStartedStateHash,
|
||||
dependencies: MangaFilterStartedStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
MangaFilterStartedStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final List<ModelManga> mangaList;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaFilterStartedStateProvider &&
|
||||
other.mangaList == mangaList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
|
||||
@override
|
||||
int runNotifierBuild(
|
||||
covariant MangaFilterStartedState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaFilterBookmarkedStateHash() =>
|
||||
r'88b9ef0b5a65735525a0141c6e7397d9aa7e27ff';
|
||||
|
||||
abstract class _$MangaFilterBookmarkedState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final List<ModelManga> mangaList;
|
||||
|
||||
int build({
|
||||
required List<ModelManga> mangaList,
|
||||
});
|
||||
}
|
||||
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
@ProviderFor(MangaFilterBookmarkedState)
|
||||
const mangaFilterBookmarkedStateProvider = MangaFilterBookmarkedStateFamily();
|
||||
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
class MangaFilterBookmarkedStateFamily extends Family<int> {
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
const MangaFilterBookmarkedStateFamily();
|
||||
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
MangaFilterBookmarkedStateProvider call({
|
||||
required List<ModelManga> mangaList,
|
||||
}) {
|
||||
return MangaFilterBookmarkedStateProvider(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
MangaFilterBookmarkedStateProvider getProviderOverride(
|
||||
covariant MangaFilterBookmarkedStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaList: provider.mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'mangaFilterBookmarkedStateProvider';
|
||||
}
|
||||
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
class MangaFilterBookmarkedStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<MangaFilterBookmarkedState, int> {
|
||||
/// See also [MangaFilterBookmarkedState].
|
||||
MangaFilterBookmarkedStateProvider({
|
||||
required this.mangaList,
|
||||
}) : super.internal(
|
||||
() => MangaFilterBookmarkedState()..mangaList = mangaList,
|
||||
from: mangaFilterBookmarkedStateProvider,
|
||||
name: r'mangaFilterBookmarkedStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaFilterBookmarkedStateHash,
|
||||
dependencies: MangaFilterBookmarkedStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
MangaFilterBookmarkedStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final List<ModelManga> mangaList;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaFilterBookmarkedStateProvider &&
|
||||
other.mangaList == mangaList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
|
||||
@override
|
||||
int runNotifierBuild(
|
||||
covariant MangaFilterBookmarkedState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaFilterResultStateHash() =>
|
||||
r'de16f80b0521bd1b8ac3232f2c5f71a554dc94e4';
|
||||
|
||||
abstract class _$MangaFilterResultState
|
||||
extends BuildlessAutoDisposeNotifier<List<ModelManga>> {
|
||||
late final List<ModelManga> mangaList;
|
||||
|
||||
List<ModelManga> build({
|
||||
required List<ModelManga> mangaList,
|
||||
});
|
||||
}
|
||||
|
||||
/// See also [MangaFilterResultState].
|
||||
@ProviderFor(MangaFilterResultState)
|
||||
const mangaFilterResultStateProvider = MangaFilterResultStateFamily();
|
||||
|
||||
/// See also [MangaFilterResultState].
|
||||
class MangaFilterResultStateFamily extends Family<List<ModelManga>> {
|
||||
/// See also [MangaFilterResultState].
|
||||
const MangaFilterResultStateFamily();
|
||||
|
||||
/// See also [MangaFilterResultState].
|
||||
MangaFilterResultStateProvider call({
|
||||
required List<ModelManga> mangaList,
|
||||
}) {
|
||||
return MangaFilterResultStateProvider(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
MangaFilterResultStateProvider getProviderOverride(
|
||||
covariant MangaFilterResultStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaList: provider.mangaList,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'mangaFilterResultStateProvider';
|
||||
}
|
||||
|
||||
/// See also [MangaFilterResultState].
|
||||
class MangaFilterResultStateProvider extends AutoDisposeNotifierProviderImpl<
|
||||
MangaFilterResultState, List<ModelManga>> {
|
||||
/// See also [MangaFilterResultState].
|
||||
MangaFilterResultStateProvider({
|
||||
required this.mangaList,
|
||||
}) : super.internal(
|
||||
() => MangaFilterResultState()..mangaList = mangaList,
|
||||
from: mangaFilterResultStateProvider,
|
||||
name: r'mangaFilterResultStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaFilterResultStateHash,
|
||||
dependencies: MangaFilterResultStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
MangaFilterResultStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final List<ModelManga> mangaList;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaFilterResultStateProvider &&
|
||||
other.mangaList == mangaList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
|
||||
@override
|
||||
List<ModelManga> runNotifierBuild(
|
||||
covariant MangaFilterResultState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
mangaList: mangaList,
|
||||
);
|
||||
}
|
||||
}
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -56,33 +56,27 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
ScrollController _scrollController = ScrollController();
|
||||
|
||||
late int _pageLength = ref
|
||||
.read(chapterFilterResultStateProvider(modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.getData()
|
||||
.watch(
|
||||
chapterFilterResultStateProvider(modelManga: widget.modelManga!))
|
||||
.chapters!
|
||||
.length +
|
||||
1;
|
||||
late List<ModelChapters>? _chapters = ref
|
||||
.read(chapterFilterResultStateProvider(modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.getData()
|
||||
.watch(chapterFilterResultStateProvider(modelManga: widget.modelManga!))
|
||||
.chapters;
|
||||
late ModelManga? _modelManga = ref
|
||||
.read(chapterFilterResultStateProvider(modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.getData();
|
||||
.watch(chapterFilterResultStateProvider(modelManga: widget.modelManga!));
|
||||
|
||||
_refreshData() {
|
||||
final modelManga = ref
|
||||
.read(chapterFilterResultStateProvider(modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.getData();
|
||||
|
||||
setState(() {
|
||||
_pageLength = modelManga.chapters!.length + 1;
|
||||
_chapters = modelManga.chapters;
|
||||
_modelManga = modelManga;
|
||||
});
|
||||
final modelManga = ref.watch(
|
||||
chapterFilterResultStateProvider(modelManga: widget.modelManga!));
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_pageLength = modelManga.chapters!.length + 1;
|
||||
_chapters = modelManga.chapters;
|
||||
_modelManga = modelManga;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
bool isRefresh = false;
|
||||
|
|
@ -93,6 +87,10 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
final reverse =
|
||||
ref.watch(reverseMangaStateProvider(modelManga: widget.modelManga!));
|
||||
final chapter = ref.watch(chapterModelStateProvider);
|
||||
final isNotFiltering = ref
|
||||
.read(chapterFilterResultStateProvider(modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.isNotFiltering();
|
||||
return NotificationListener<UserScrollNotification>(
|
||||
onNotification: (notification) {
|
||||
if (notification.direction == ScrollDirection.forward) {
|
||||
|
|
@ -192,8 +190,9 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
onPressed: () {
|
||||
_showDraggableMenu();
|
||||
},
|
||||
icon: const Icon(
|
||||
icon: Icon(
|
||||
Icons.filter_list_sharp,
|
||||
color: isNotFiltering ? null : Colors.yellow,
|
||||
)),
|
||||
PopupMenuButton(
|
||||
itemBuilder: (context) {
|
||||
|
|
@ -265,11 +264,9 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
return _bodyContainer();
|
||||
}
|
||||
if (isRefresh) {
|
||||
final modelManga = ref
|
||||
.read(chapterFilterResultStateProvider(
|
||||
modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.getData();
|
||||
final modelManga = ref.watch(
|
||||
chapterFilterResultStateProvider(
|
||||
modelManga: widget.modelManga!));
|
||||
|
||||
_pageLength = modelManga.chapters!.length + 1;
|
||||
_chapters = modelManga.chapters;
|
||||
|
|
@ -346,22 +343,8 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
}
|
||||
|
||||
// print(chapterNameList);
|
||||
final model = ModelManga(
|
||||
imageUrl: widget.modelManga!.imageUrl,
|
||||
name: widget.modelManga!.name,
|
||||
genre: widget.modelManga!.genre,
|
||||
author: widget.modelManga!.author,
|
||||
description: widget.modelManga!.description,
|
||||
status: widget.modelManga!.status,
|
||||
favorite: widget.modelManga!.favorite,
|
||||
link: widget.modelManga!.link,
|
||||
source: widget.modelManga!.source,
|
||||
lang: widget.modelManga!.lang,
|
||||
dateAdded: widget.modelManga!.dateAdded,
|
||||
lastUpdate: widget.modelManga!.lastUpdate,
|
||||
chapters: chap,
|
||||
category: widget.modelManga!.category,
|
||||
lastRead: widget.modelManga!.lastRead);
|
||||
final model = modelMangaWithNewChapValue(
|
||||
modelManga: widget.modelManga!, chapters: chap);
|
||||
ref.watch(hiveBoxManga).put(
|
||||
'${widget.modelManga!.lang}-${widget.modelManga!.link}',
|
||||
model);
|
||||
|
|
@ -416,22 +399,8 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
entries.chapters![i].lastPageRead));
|
||||
}
|
||||
|
||||
final model = ModelManga(
|
||||
imageUrl: widget.modelManga!.imageUrl,
|
||||
name: widget.modelManga!.name,
|
||||
genre: widget.modelManga!.genre,
|
||||
author: widget.modelManga!.author,
|
||||
description: widget.modelManga!.description,
|
||||
status: widget.modelManga!.status,
|
||||
favorite: widget.modelManga!.favorite,
|
||||
link: widget.modelManga!.link,
|
||||
source: widget.modelManga!.source,
|
||||
lang: widget.modelManga!.lang,
|
||||
dateAdded: widget.modelManga!.dateAdded,
|
||||
lastUpdate: widget.modelManga!.lastUpdate,
|
||||
chapters: chap,
|
||||
category: widget.modelManga!.category,
|
||||
lastRead: widget.modelManga!.lastRead);
|
||||
final model = modelMangaWithNewChapValue(
|
||||
modelManga: widget.modelManga!, chapters: chap);
|
||||
ref.watch(hiveBoxManga).put(
|
||||
'${widget.modelManga!.lang}-${widget.modelManga!.link}',
|
||||
model);
|
||||
|
|
@ -564,15 +533,17 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
_refreshData();
|
||||
}),
|
||||
ListTileChapterFilter(
|
||||
label: "Bookmark",
|
||||
label: "Bookmarked",
|
||||
type: ref.watch(
|
||||
chapterFilterBookmarkStateProvider(
|
||||
chapterFilterBookmarkedStateProvider(
|
||||
modelManga: widget.modelManga!)),
|
||||
onTap: () {
|
||||
ref
|
||||
.read(chapterFilterBookmarkStateProvider(
|
||||
modelManga: widget.modelManga!)
|
||||
.notifier)
|
||||
.read(
|
||||
chapterFilterBookmarkedStateProvider(
|
||||
modelManga:
|
||||
widget.modelManga!)
|
||||
.notifier)
|
||||
.update();
|
||||
_refreshData();
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -95,14 +95,14 @@ class ReverseMangaState extends _$ReverseMangaState {
|
|||
@override
|
||||
bool build({required ModelManga modelManga}) {
|
||||
return ref.watch(hiveBoxSettings).get(
|
||||
"${modelManga.source}/${modelManga.name}-reverseManga",
|
||||
"${modelManga.source}/${modelManga.name}-reverseChapter",
|
||||
defaultValue: false);
|
||||
}
|
||||
|
||||
void update(bool value) {
|
||||
ref
|
||||
.watch(hiveBoxSettings)
|
||||
.put("${modelManga.source}/${modelManga.name}-reverseManga", value);
|
||||
.put("${modelManga.source}/${modelManga.name}-reverseChapter", value);
|
||||
state = value;
|
||||
}
|
||||
}
|
||||
|
|
@ -117,13 +117,13 @@ class ChapterFilterDownloadedState extends _$ChapterFilterDownloadedState {
|
|||
|
||||
int getType() {
|
||||
return ref.watch(hiveBoxSettings).get(
|
||||
"${modelManga.source}/${modelManga.name}-sortChapterDownload",
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterDownload",
|
||||
defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put(
|
||||
"${modelManga.source}/${modelManga.name}-sortChapterDownload", type);
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterDownload", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
|
|
@ -146,22 +146,8 @@ class ChapterFilterDownloadedState extends _$ChapterFilterDownloadedState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else if (getType() == 2) {
|
||||
|
|
@ -183,22 +169,8 @@ class ChapterFilterDownloadedState extends _$ChapterFilterDownloadedState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -225,22 +197,8 @@ class ChapterFilterDownloadedState extends _$ChapterFilterDownloadedState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(1);
|
||||
return model;
|
||||
} else if (state == 1) {
|
||||
|
|
@ -262,22 +220,8 @@ class ChapterFilterDownloadedState extends _$ChapterFilterDownloadedState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(2);
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -297,14 +241,13 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
|
||||
int getType() {
|
||||
return ref.watch(hiveBoxSettings).get(
|
||||
"${modelManga.source}/${modelManga.name}-sortChapterUnread",
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterUnread",
|
||||
defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref
|
||||
.watch(hiveBoxSettings)
|
||||
.put("${modelManga.source}/${modelManga.name}-sortChapterUnread", type);
|
||||
ref.watch(hiveBoxSettings).put(
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterUnread", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
|
|
@ -324,22 +267,8 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else if (getType() == 2) {
|
||||
|
|
@ -357,22 +286,8 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -396,22 +311,8 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(1);
|
||||
return model;
|
||||
} else if (state == 1) {
|
||||
|
|
@ -429,22 +330,8 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(2);
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -455,7 +342,7 @@ class ChapterFilterUnreadState extends _$ChapterFilterUnreadState {
|
|||
}
|
||||
|
||||
@riverpod
|
||||
class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
||||
class ChapterFilterBookmarkedState extends _$ChapterFilterBookmarkedState {
|
||||
@override
|
||||
int build({required ModelManga modelManga}) {
|
||||
state = getType();
|
||||
|
|
@ -464,13 +351,13 @@ class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
|||
|
||||
int getType() {
|
||||
return ref.watch(hiveBoxSettings).get(
|
||||
"${modelManga.source}/${modelManga.name}-sortChapterBookMark",
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterBookMark",
|
||||
defaultValue: 0);
|
||||
}
|
||||
|
||||
void setType(int type) {
|
||||
ref.watch(hiveBoxSettings).put(
|
||||
"${modelManga.source}/${modelManga.name}-sortChapterBookMark", type);
|
||||
"${modelManga.source}/${modelManga.name}-filterChapterBookMark", type);
|
||||
state = type;
|
||||
}
|
||||
|
||||
|
|
@ -490,22 +377,8 @@ class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else if (getType() == 2) {
|
||||
|
|
@ -523,22 +396,8 @@ class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -562,22 +421,8 @@ class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(1);
|
||||
return model;
|
||||
} else if (state == 1) {
|
||||
|
|
@ -595,22 +440,8 @@ class ChapterFilterBookmarkState extends _$ChapterFilterBookmarkState {
|
|||
lastPageRead: chapters[i].lastPageRead));
|
||||
}
|
||||
}
|
||||
final model = ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chap,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
final model =
|
||||
modelMangaWithNewChapValue(modelManga: modelManga, chapters: chap);
|
||||
setType(2);
|
||||
return model;
|
||||
} else {
|
||||
|
|
@ -625,8 +456,8 @@ class ChapterFilterResultState extends _$ChapterFilterResultState {
|
|||
@override
|
||||
ModelManga build({required ModelManga modelManga}) {
|
||||
final data1 = ref
|
||||
.read(
|
||||
chapterFilterDownloadedStateProvider(modelManga: modelManga).notifier)
|
||||
.read(chapterFilterDownloadedStateProvider(modelManga: modelManga)
|
||||
.notifier)
|
||||
.getData();
|
||||
|
||||
final data2 = ref
|
||||
|
|
@ -634,26 +465,47 @@ class ChapterFilterResultState extends _$ChapterFilterResultState {
|
|||
.getData();
|
||||
|
||||
final data3 = ref
|
||||
.read(chapterFilterBookmarkStateProvider(modelManga: data2).notifier)
|
||||
.read(chapterFilterBookmarkedStateProvider(modelManga: data2).notifier)
|
||||
.getData();
|
||||
|
||||
return data3;
|
||||
}
|
||||
|
||||
ModelManga getData() {
|
||||
final data1 = ref
|
||||
.read(
|
||||
chapterFilterDownloadedStateProvider(modelManga: modelManga).notifier)
|
||||
.getData();
|
||||
bool isNotFiltering() {
|
||||
final downloadFilterType = ref
|
||||
.read(chapterFilterDownloadedStateProvider(modelManga: modelManga)
|
||||
.notifier)
|
||||
.getType();
|
||||
final unreadFilterType = ref
|
||||
.read(chapterFilterUnreadStateProvider(modelManga: modelManga).notifier)
|
||||
.getType();
|
||||
|
||||
final data2 = ref
|
||||
.read(chapterFilterUnreadStateProvider(modelManga: data1).notifier)
|
||||
.getData();
|
||||
|
||||
final data3 = ref
|
||||
.read(chapterFilterBookmarkStateProvider(modelManga: data2).notifier)
|
||||
.getData();
|
||||
|
||||
return data3;
|
||||
final bookmarkedFilterType = ref
|
||||
.read(chapterFilterBookmarkedStateProvider(modelManga: modelManga)
|
||||
.notifier)
|
||||
.getType();
|
||||
return downloadFilterType == 0 &&
|
||||
unreadFilterType == 0 &&
|
||||
bookmarkedFilterType == 0;
|
||||
}
|
||||
}
|
||||
|
||||
ModelManga modelMangaWithNewChapValue(
|
||||
{required ModelManga modelManga, required List<ModelChapters>? chapters}) {
|
||||
return ModelManga(
|
||||
imageUrl: modelManga.imageUrl,
|
||||
name: modelManga.name,
|
||||
genre: modelManga.genre,
|
||||
author: modelManga.author,
|
||||
description: modelManga.description,
|
||||
status: modelManga.status,
|
||||
favorite: modelManga.favorite,
|
||||
link: modelManga.link,
|
||||
source: modelManga.source,
|
||||
lang: modelManga.lang,
|
||||
dateAdded: modelManga.dateAdded,
|
||||
lastUpdate: modelManga.lastUpdate,
|
||||
chapters: chapters,
|
||||
category: modelManga.category,
|
||||
lastRead: modelManga.lastRead);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ class ReverseMangaStateProvider
|
|||
}
|
||||
|
||||
String _$chapterFilterDownloadedStateHash() =>
|
||||
r'9c0937b3deaa6982ec7a8c9ab5d55a99a059cd80';
|
||||
r'46dca943e064d5f70968c711812091783e0a4039';
|
||||
|
||||
abstract class _$ChapterFilterDownloadedState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
|
|
@ -290,7 +290,7 @@ class ChapterFilterDownloadedStateProvider
|
|||
}
|
||||
|
||||
String _$chapterFilterUnreadStateHash() =>
|
||||
r'98e86b05fdcb874b551329ffdf322681f46fb6ce';
|
||||
r'48076800725c22f04493653deec4e946cb71d195';
|
||||
|
||||
abstract class _$ChapterFilterUnreadState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
|
|
@ -388,10 +388,10 @@ class ChapterFilterUnreadStateProvider
|
|||
}
|
||||
}
|
||||
|
||||
String _$chapterFilterBookmarkStateHash() =>
|
||||
r'6fb5d0d506bc209bb6d6fea8e665f511b8ef0e8f';
|
||||
String _$chapterFilterBookmarkedStateHash() =>
|
||||
r'4772ce2506d0c939b549c8661cd3b62cae853e20';
|
||||
|
||||
abstract class _$ChapterFilterBookmarkState
|
||||
abstract class _$ChapterFilterBookmarkedState
|
||||
extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final ModelManga modelManga;
|
||||
|
||||
|
|
@ -400,27 +400,28 @@ abstract class _$ChapterFilterBookmarkState
|
|||
});
|
||||
}
|
||||
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
@ProviderFor(ChapterFilterBookmarkState)
|
||||
const chapterFilterBookmarkStateProvider = ChapterFilterBookmarkStateFamily();
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
@ProviderFor(ChapterFilterBookmarkedState)
|
||||
const chapterFilterBookmarkedStateProvider =
|
||||
ChapterFilterBookmarkedStateFamily();
|
||||
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
class ChapterFilterBookmarkStateFamily extends Family<int> {
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
const ChapterFilterBookmarkStateFamily();
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
class ChapterFilterBookmarkedStateFamily extends Family<int> {
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
const ChapterFilterBookmarkedStateFamily();
|
||||
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
ChapterFilterBookmarkStateProvider call({
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
ChapterFilterBookmarkedStateProvider call({
|
||||
required ModelManga modelManga,
|
||||
}) {
|
||||
return ChapterFilterBookmarkStateProvider(
|
||||
return ChapterFilterBookmarkedStateProvider(
|
||||
modelManga: modelManga,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
ChapterFilterBookmarkStateProvider getProviderOverride(
|
||||
covariant ChapterFilterBookmarkStateProvider provider,
|
||||
ChapterFilterBookmarkedStateProvider getProviderOverride(
|
||||
covariant ChapterFilterBookmarkedStateProvider provider,
|
||||
) {
|
||||
return call(
|
||||
modelManga: provider.modelManga,
|
||||
|
|
@ -439,33 +440,33 @@ class ChapterFilterBookmarkStateFamily extends Family<int> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'chapterFilterBookmarkStateProvider';
|
||||
String? get name => r'chapterFilterBookmarkedStateProvider';
|
||||
}
|
||||
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
class ChapterFilterBookmarkStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<ChapterFilterBookmarkState, int> {
|
||||
/// See also [ChapterFilterBookmarkState].
|
||||
ChapterFilterBookmarkStateProvider({
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
class ChapterFilterBookmarkedStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<ChapterFilterBookmarkedState, int> {
|
||||
/// See also [ChapterFilterBookmarkedState].
|
||||
ChapterFilterBookmarkedStateProvider({
|
||||
required this.modelManga,
|
||||
}) : super.internal(
|
||||
() => ChapterFilterBookmarkState()..modelManga = modelManga,
|
||||
from: chapterFilterBookmarkStateProvider,
|
||||
name: r'chapterFilterBookmarkStateProvider',
|
||||
() => ChapterFilterBookmarkedState()..modelManga = modelManga,
|
||||
from: chapterFilterBookmarkedStateProvider,
|
||||
name: r'chapterFilterBookmarkedStateProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$chapterFilterBookmarkStateHash,
|
||||
dependencies: ChapterFilterBookmarkStateFamily._dependencies,
|
||||
: _$chapterFilterBookmarkedStateHash,
|
||||
dependencies: ChapterFilterBookmarkedStateFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
ChapterFilterBookmarkStateFamily._allTransitiveDependencies,
|
||||
ChapterFilterBookmarkedStateFamily._allTransitiveDependencies,
|
||||
);
|
||||
|
||||
final ModelManga modelManga;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ChapterFilterBookmarkStateProvider &&
|
||||
return other is ChapterFilterBookmarkedStateProvider &&
|
||||
other.modelManga == modelManga;
|
||||
}
|
||||
|
||||
|
|
@ -479,7 +480,7 @@ class ChapterFilterBookmarkStateProvider
|
|||
|
||||
@override
|
||||
int runNotifierBuild(
|
||||
covariant ChapterFilterBookmarkState notifier,
|
||||
covariant ChapterFilterBookmarkedState notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
modelManga: modelManga,
|
||||
|
|
@ -488,7 +489,7 @@ class ChapterFilterBookmarkStateProvider
|
|||
}
|
||||
|
||||
String _$chapterFilterResultStateHash() =>
|
||||
r'ddb83c55bbbbd00178f582875a9b72fcec0eae5a';
|
||||
r'4701e32ae755fc2c60ef7fe6c64e3073f6329a06';
|
||||
|
||||
abstract class _$ChapterFilterResultState
|
||||
extends BuildlessAutoDisposeNotifier<ModelManga> {
|
||||
|
|
|
|||
|
|
@ -19,32 +19,12 @@ class ListTileChapterFilter extends StatelessWidget {
|
|||
? const SizedBox(
|
||||
height: 20, width: 20, child: Icon(Icons.check_box_outline_blank))
|
||||
: type == 1
|
||||
? const SizedBox(height: 20, width: 20, child: Icon(Icons.check_box))
|
||||
: Stack(
|
||||
children: [
|
||||
const SizedBox(
|
||||
height: 20,
|
||||
width: 20,
|
||||
child: Icon(Icons.check_box_outline_blank)),
|
||||
Positioned(
|
||||
top: 3,
|
||||
left: 2,
|
||||
right: 0,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).primaryColor,
|
||||
borderRadius: BorderRadius.circular(2)),
|
||||
height: 18,
|
||||
width: 17,
|
||||
child: const Icon(
|
||||
Icons.clear,
|
||||
color: Colors.black,
|
||||
size: 18,
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
? const SizedBox(
|
||||
height: 20, width: 20, child: Icon(Icons.check_box))
|
||||
: const SizedBox(
|
||||
height: 20,
|
||||
width: 20,
|
||||
child: Icon(Icons.indeterminate_check_box_rounded)),
|
||||
title: Text(
|
||||
label,
|
||||
style: const TextStyle(fontSize: 14),
|
||||
|
|
|
|||
|
|
@ -625,6 +625,7 @@ class _MangaChapterPageGalleryState
|
|||
widget.readerController
|
||||
.getReaderModeValue(readerMode),
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12,
|
||||
),
|
||||
),
|
||||
|
|
@ -670,6 +671,7 @@ class _MangaChapterPageGalleryState
|
|||
child: Text(
|
||||
'${_currentIndex + 1} / ${widget.readerController.getPageLength(widget.url)}',
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12.0,
|
||||
shadows: <Shadow>[
|
||||
Shadow(offset: Offset(0.0, 0.0), blurRadius: 10.0)
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ class CurrentIndexProvider
|
|||
}
|
||||
}
|
||||
|
||||
String _$readerControllerHash() => r'2528e56dfbf71a996ceeada7075eff571b621080';
|
||||
String _$readerControllerHash() => r'56c832982f94aab78b30439b025177b7f3851cec';
|
||||
|
||||
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
|
||||
late final MangaReaderModel mangaReaderModel;
|
||||
|
|
|
|||
Loading…
Reference in a new issue