Skip to content

Pica Comic v2.2.5

Posted on:2023年10月28日 at 15:22

Pica Comic v2.2.5

主要更新内容

禁漫分流连接测试

禁漫的服务器非常不稳定

本次更新中, 添加了几个禁漫的分流域名, 并添加了测试功能

jm network test

虽然我将测试函数命名为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();
    }
  }

新的切换章节方式

在从上至下(连续)阅读模式, 当滑动到底部时, 会出现切换章节的按钮

现在, 当你尝试继续滑动, 你会发现按钮出现了变色

Button

继续滑动, 并使其完全变色, 就会触发章节跳转