This commit is contained in:
2026-03-07 17:24:59 +08:00
parent 4418ebecac
commit b0ec8ab4bd
417 changed files with 42546 additions and 2 deletions

View File

@@ -0,0 +1,94 @@
import 'package:flutter_dmzj/models/db/download_status.dart';
import 'package:hive/hive.dart';
part 'comic_download_info.g.dart';
@HiveType(typeId: 3)
class ComicDownloadInfo {
ComicDownloadInfo({
required this.addTime,
required this.chapterId,
required this.chapterSort,
required this.comicCover,
required this.comicId,
required this.comicName,
required this.files,
required this.index,
required this.savePath,
required this.status,
required this.taskId,
required this.total,
required this.volumeName,
required this.urls,
required this.chapterName,
required this.isVip,
required this.isLongComic,
});
///TaskID 任务由漫画ID_章节ID组成
@HiveField(0)
String taskId;
///ComicID 漫画ID
@HiveField(1)
int comicId;
///ComicName 漫画名称
@HiveField(2)
String comicName;
///ComicCover 漫画封面
@HiveField(3)
String comicCover;
///ChapterID 章节ID
@HiveField(4)
int chapterId;
@HiveField(5)
String chapterName;
///VoulmeName 分卷名称
@HiveField(6)
String volumeName;
///ChapterSort 排序
@HiveField(7)
int chapterSort;
///SavePath 存储路径
@HiveField(8)
String savePath;
///Files 文件列表
@HiveField(9)
List<String> files;
///Index 当前下载页数
@HiveField(10)
int index;
///Total 总计页数
@HiveField(11)
int total;
///Status 当前状态
@HiveField(12)
DownloadStatus status;
///AddTime 任务时间
@HiveField(13)
DateTime addTime;
/// 下载图片链接
@HiveField(14)
List<String> urls;
/// 是否VIP章节
/// * 暂时没啥用,总之先加上
@HiveField(15)
bool isVip;
/// 是否为条漫
@HiveField(16)
bool isLongComic;
}

View File

@@ -0,0 +1,89 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'comic_download_info.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class ComicDownloadInfoAdapter extends TypeAdapter<ComicDownloadInfo> {
@override
final int typeId = 3;
@override
ComicDownloadInfo read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return ComicDownloadInfo(
addTime: fields[13] as DateTime,
chapterId: fields[4] as int,
chapterSort: fields[7] as int,
comicCover: fields[3] as String,
comicId: fields[1] as int,
comicName: fields[2] as String,
files: (fields[9] as List).cast<String>(),
index: fields[10] as int,
savePath: fields[8] as String,
status: fields[12] as DownloadStatus,
taskId: fields[0] as String,
total: fields[11] as int,
volumeName: fields[6] as String,
urls: (fields[14] as List).cast<String>(),
chapterName: fields[5] as String,
isVip: (fields[15] ?? false) as bool,
isLongComic: (fields[16] ?? false) as bool,
);
}
@override
void write(BinaryWriter writer, ComicDownloadInfo obj) {
writer
..writeByte(17)
..writeByte(0)
..write(obj.taskId)
..writeByte(1)
..write(obj.comicId)
..writeByte(2)
..write(obj.comicName)
..writeByte(3)
..write(obj.comicCover)
..writeByte(4)
..write(obj.chapterId)
..writeByte(5)
..write(obj.chapterName)
..writeByte(6)
..write(obj.volumeName)
..writeByte(7)
..write(obj.chapterSort)
..writeByte(8)
..write(obj.savePath)
..writeByte(9)
..write(obj.files)
..writeByte(10)
..write(obj.index)
..writeByte(11)
..write(obj.total)
..writeByte(12)
..write(obj.status)
..writeByte(13)
..write(obj.addTime)
..writeByte(14)
..write(obj.urls)
..writeByte(15)
..write(obj.isVip)
..writeByte(16)
..write(obj.isLongComic);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is ComicDownloadInfoAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,36 @@
import 'package:hive/hive.dart';
part 'comic_history.g.dart';
@HiveType(typeId: 1)
class ComicHistory {
ComicHistory({
required this.comicId,
required this.chapterId,
required this.comicName,
required this.comicCover,
required this.chapterName,
required this.updateTime,
required this.page,
});
@HiveField(0)
int comicId;
@HiveField(1)
int chapterId;
@HiveField(2)
String comicName;
@HiveField(3)
String comicCover;
@HiveField(4)
String chapterName;
@HiveField(5)
int page;
@HiveField(6)
DateTime updateTime;
}

View File

@@ -0,0 +1,59 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'comic_history.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class ComicHistoryAdapter extends TypeAdapter<ComicHistory> {
@override
final int typeId = 1;
@override
ComicHistory read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return ComicHistory(
comicId: fields[0] as int,
chapterId: fields[1] as int,
comicName: fields[2] as String,
comicCover: fields[3] as String,
chapterName: fields[4] as String,
updateTime: fields[6] as DateTime,
page: fields[5] as int,
);
}
@override
void write(BinaryWriter writer, ComicHistory obj) {
writer
..writeByte(7)
..writeByte(0)
..write(obj.comicId)
..writeByte(1)
..write(obj.chapterId)
..writeByte(2)
..write(obj.comicName)
..writeByte(3)
..write(obj.comicCover)
..writeByte(4)
..write(obj.chapterName)
..writeByte(5)
..write(obj.page)
..writeByte(6)
..write(obj.updateTime);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is ComicHistoryAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,46 @@
import 'package:hive/hive.dart';
part 'download_status.g.dart';
/// 下载状态
@HiveType(typeId: 4)
enum DownloadStatus {
/// 等待下载中
@HiveField(0)
wait,
/// 正在读取章节信息
@HiveField(1)
loadding,
/// 下载中
@HiveField(2)
downloading,
/// 使用数据,自动暂停,当网络切换时恢复下载
@HiveField(3)
pauseCellular,
/// 暂停
@HiveField(4)
pause,
/// 已完成
@HiveField(5)
complete,
/// 读取信息时出现错误
@HiveField(6)
errorLoad,
/// 下载出错
@HiveField(7)
error,
/// 已取消
@HiveField(8)
cancel,
/// 等待网络连接
@HiveField(9)
waitNetwork,
}

View File

@@ -0,0 +1,86 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'download_status.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class DownloadStatusAdapter extends TypeAdapter<DownloadStatus> {
@override
final int typeId = 4;
@override
DownloadStatus read(BinaryReader reader) {
switch (reader.readByte()) {
case 0:
return DownloadStatus.wait;
case 1:
return DownloadStatus.loadding;
case 2:
return DownloadStatus.downloading;
case 3:
return DownloadStatus.pauseCellular;
case 4:
return DownloadStatus.pause;
case 5:
return DownloadStatus.complete;
case 6:
return DownloadStatus.errorLoad;
case 7:
return DownloadStatus.error;
case 8:
return DownloadStatus.cancel;
case 9:
return DownloadStatus.waitNetwork;
default:
return DownloadStatus.wait;
}
}
@override
void write(BinaryWriter writer, DownloadStatus obj) {
switch (obj) {
case DownloadStatus.wait:
writer.writeByte(0);
break;
case DownloadStatus.loadding:
writer.writeByte(1);
break;
case DownloadStatus.downloading:
writer.writeByte(2);
break;
case DownloadStatus.pauseCellular:
writer.writeByte(3);
break;
case DownloadStatus.pause:
writer.writeByte(4);
break;
case DownloadStatus.complete:
writer.writeByte(5);
break;
case DownloadStatus.errorLoad:
writer.writeByte(6);
break;
case DownloadStatus.error:
writer.writeByte(7);
break;
case DownloadStatus.cancel:
writer.writeByte(8);
break;
case DownloadStatus.waitNetwork:
writer.writeByte(9);
break;
}
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is DownloadStatusAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,39 @@
import 'package:get/get.dart';
import 'package:hive/hive.dart';
part 'local_favorite.g.dart';
@HiveType(typeId: 6)
class LocalFavorite {
LocalFavorite({
required this.id,
required this.objId,
required this.title,
required this.cover,
required this.type,
required this.updateTime,
});
@HiveField(0)
String id;
String get hiveId => "${type}_$objId";
@HiveField(1)
int objId;
@HiveField(2)
String title;
@HiveField(3)
String cover;
/// 类型对应app_constant漫画或小说
@HiveField(4)
int type;
@HiveField(5)
DateTime updateTime;
//是否被选中
Rx<bool> isChecked = false.obs;
}

View File

@@ -0,0 +1,56 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'local_favorite.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class LocalFavoriteAdapter extends TypeAdapter<LocalFavorite> {
@override
final int typeId = 6;
@override
LocalFavorite read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return LocalFavorite(
id: fields[0] as String,
objId: fields[1] as int,
title: fields[2] as String,
cover: fields[3] as String,
type: fields[4] as int,
updateTime: fields[5] as DateTime,
);
}
@override
void write(BinaryWriter writer, LocalFavorite obj) {
writer
..writeByte(6)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.objId)
..writeByte(2)
..write(obj.title)
..writeByte(3)
..write(obj.cover)
..writeByte(4)
..write(obj.type)
..writeByte(5)
..write(obj.updateTime);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is LocalFavoriteAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,105 @@
import 'package:flutter_dmzj/models/db/download_status.dart';
import 'package:hive/hive.dart';
part 'novel_download_info.g.dart';
@HiveType(typeId: 5)
class NovelDownloadInfo {
NovelDownloadInfo({
required this.addTime,
required this.chapterId,
required this.chapterSort,
required this.novelCover,
required this.novelId,
required this.novelName,
required this.fileName,
required this.imageFiles,
required this.savePath,
required this.status,
required this.taskId,
required this.isImage,
required this.volumeName,
required this.progress,
required this.chapterName,
required this.volumeID,
required this.isVip,
required this.volumeOrder,
required this.imageUrls,
});
///TaskID 任务由小说ID_章节ID组成
@HiveField(0)
String taskId;
///NovelID 小说ID
@HiveField(1)
int novelId;
///NovelName 小说名称
@HiveField(2)
String novelName;
///NovelCover 小说封面
@HiveField(3)
String novelCover;
///ChapterID 章节ID
@HiveField(4)
int chapterId;
///chapterName 章节名称
@HiveField(5)
String chapterName;
///VoulmeID 分卷ID
@HiveField(6)
int volumeID;
///VoulmeName 分卷名称
@HiveField(7)
String volumeName;
///volumeOrder 分卷排序
@HiveField(8)
int volumeOrder;
///ChapterSort 排序
@HiveField(9)
int chapterSort;
///SavePath 存储路径
@HiveField(10)
String savePath;
///Files 文件列表
@HiveField(11)
String fileName;
///isImage 是否为插图
@HiveField(12)
bool isImage;
/// 图片保存路径
@HiveField(13)
List<String> imageFiles;
///下载进度 0-100
@HiveField(14)
int progress;
///Status 当前状态
@HiveField(15)
DownloadStatus status;
///AddTime 任务时间
@HiveField(16)
DateTime addTime;
/// 是否VIP章节
/// * 暂时没啥用,总之先加上
@HiveField(17)
bool isVip;
/// 下载图片链接
@HiveField(18)
List<String> imageUrls;
}

View File

@@ -0,0 +1,95 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'novel_download_info.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class NovelDownloadInfoAdapter extends TypeAdapter<NovelDownloadInfo> {
@override
final int typeId = 5;
@override
NovelDownloadInfo read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return NovelDownloadInfo(
addTime: fields[16] as DateTime,
chapterId: fields[4] as int,
chapterSort: fields[9] as int,
novelCover: fields[3] as String,
novelId: fields[1] as int,
novelName: fields[2] as String,
fileName: fields[11] as String,
imageFiles: (fields[13] as List).cast<String>(),
savePath: fields[10] as String,
status: fields[15] as DownloadStatus,
taskId: fields[0] as String,
isImage: fields[12] as bool,
volumeName: fields[7] as String,
progress: fields[14] as int,
chapterName: fields[5] as String,
volumeID: fields[6] as int,
isVip: fields[17] as bool,
volumeOrder: fields[8] as int,
imageUrls: (fields[18] as List).cast<String>(),
);
}
@override
void write(BinaryWriter writer, NovelDownloadInfo obj) {
writer
..writeByte(19)
..writeByte(0)
..write(obj.taskId)
..writeByte(1)
..write(obj.novelId)
..writeByte(2)
..write(obj.novelName)
..writeByte(3)
..write(obj.novelCover)
..writeByte(4)
..write(obj.chapterId)
..writeByte(5)
..write(obj.chapterName)
..writeByte(6)
..write(obj.volumeID)
..writeByte(7)
..write(obj.volumeName)
..writeByte(8)
..write(obj.volumeOrder)
..writeByte(9)
..write(obj.chapterSort)
..writeByte(10)
..write(obj.savePath)
..writeByte(11)
..write(obj.fileName)
..writeByte(12)
..write(obj.isImage)
..writeByte(13)
..write(obj.imageFiles)
..writeByte(14)
..write(obj.progress)
..writeByte(15)
..write(obj.status)
..writeByte(16)
..write(obj.addTime)
..writeByte(17)
..write(obj.isVip)
..writeByte(18)
..write(obj.imageUrls);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is NovelDownloadInfoAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,48 @@
import 'package:hive/hive.dart';
part 'novel_history.g.dart';
@HiveType(typeId: 2)
class NovelHistory {
NovelHistory({
required this.novelId,
required this.chapterId,
required this.novelName,
required this.novelCover,
required this.chapterName,
required this.updateTime,
required this.index,
required this.total,
required this.volumeId,
required this.volumeName,
});
@HiveField(0)
int novelId;
@HiveField(1)
int chapterId;
@HiveField(2)
String novelName;
@HiveField(3)
String novelCover;
@HiveField(4)
String chapterName;
@HiveField(5)
int index;
@HiveField(6)
int total;
@HiveField(7)
int volumeId;
@HiveField(8)
String volumeName;
@HiveField(9)
DateTime updateTime;
}

View File

@@ -0,0 +1,68 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'novel_history.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class NovelHistoryAdapter extends TypeAdapter<NovelHistory> {
@override
final int typeId = 2;
@override
NovelHistory read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return NovelHistory(
novelId: fields[0] as int,
chapterId: fields[1] as int,
novelName: fields[2] as String,
novelCover: fields[3] as String,
chapterName: fields[4] as String,
updateTime: fields[9] as DateTime,
index: fields[5] as int,
total: fields[6] as int,
volumeId: fields[7] as int,
volumeName: fields[8] as String,
);
}
@override
void write(BinaryWriter writer, NovelHistory obj) {
writer
..writeByte(10)
..writeByte(0)
..write(obj.novelId)
..writeByte(1)
..write(obj.chapterId)
..writeByte(2)
..write(obj.novelName)
..writeByte(3)
..write(obj.novelCover)
..writeByte(4)
..write(obj.chapterName)
..writeByte(5)
..write(obj.index)
..writeByte(6)
..write(obj.total)
..writeByte(7)
..write(obj.volumeId)
..writeByte(8)
..write(obj.volumeName)
..writeByte(9)
..write(obj.updateTime);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is NovelHistoryAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}