Pica Comic v2.2.5
主要更新内容
- 修复历史记录和本地收藏的封面加载问题
- 修复Picacg登录问题
- 重构设置页面
- 添加禁漫分流连接测试功能
- 添加语言设置
- 添加双击缩放功能(默认禁用)
- 改进ui, 动画, 手势识别
- 修复禁漫图片数量加载错误的问题
- 回滚了搜索页面
- 新的切换章节方式: 从上至下(连续)模式下, 滑动到底部后, 再次滑动并使按钮完全变色即切换章节
禁漫分流连接测试
禁漫的服务器非常不稳定
本次更新中, 添加了几个禁漫的分流域名, 并添加了测试功能
虽然我将测试函数命名为ping, 但此测试与Ping存在不同, 测试为获取禁漫主页所需要的时间, 只有成功获取到数据才会返回结果, 否则返回Error
Future<String> ping(int urlIndex) async {
var start = DateTime.now();
var res = await get("${urls[urlIndex]}/promote?$baseData&page=0");
if (res.error) {
return "Error";
}
var end = DateTime.now();
return "${(end - start).inMilliseconds}ms";
}
阅读器手势识别
本次更新中, 优化了从上至下(连续)阅读模式中处于放大状态的手势识别, 以及添加了双击缩放.
为了简便的实现, 我又修改了package: photo_view, 向PhotoViewController
添加了两个新的方法
void Function()? onDoubleClick;
void Function(Offset from, Offset to) animatePosition;
这两个方法在页面构建时被赋值为package: photo_view中的方法
animatePosition
用于平滑响应用户的滑动手势
onDoubleClick
用于非从上至下(连续)阅读模式时的双击翻页, photo_view包中的内置方法无法实现在从上至下(连续)阅读模式时的双击放缩, 因此需要我自己实现.
最终响应双击事件的函数被修改为这样
static void _handleDoubleClick(Offset location) async {
var logic = StateController.find<ComicReadingPageLogic>();
var controller = logic.photoViewController;
if (logic.readingMethod == ReadingMethod.topToBottomContinuously) {
final current = controller.scale;
double target;
if (controller.scale == null) {
return;
}
if (current == 1) {
target = 1.5;
} else if (current == 1.5) {
target = 2.5;
} else {
target = 1;
}
const animationTime = 120;
int operationTimes = animationTime ~/ 8;
final perScale = (target - controller.scale!) / operationTimes;
while (operationTimes != 0) {
controller.scale = controller.scale! + perScale;
await Future.delayed(const Duration(milliseconds: 8));
operationTimes--;
}
controller.scale = target;
} else {
controller.onDoubleClick?.call();
}
}
新的切换章节方式
在从上至下(连续)阅读模式, 当滑动到底部时, 会出现切换章节的按钮
现在, 当你尝试继续滑动, 你会发现按钮出现了变色
继续滑动, 并使其完全变色, 就会触发章节跳转