Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modify info page #500

Merged
merged 5 commits into from
Dec 22, 2024
Merged

modify info page #500

merged 5 commits into from
Dec 22, 2024

Conversation

ErBWs
Copy link
Contributor

@ErBWs ErBWs commented Dec 22, 2024

image image

修改:

  • bangumiItem 增加 tags,通过设置 HiveField defaultValue 保持兼容,否则会出现已存在另一个实例,打开失败的错误
  • info_page summary 修改到 fab 的详情中,增加 tags
  • info_page 在打开时进行一次 Api 更新,更新 rank、tag 和 summary
  • 将原来打开视频源的按钮放到 sysAppBar 里面
  • 修改了电脑端 wrap 的 runSpace,让间距看起来更好看

一些疑问:

  • 退出 info_page 后更新的 bangumiItem 没有被保存,不清楚怎么让他保存
  • Collect 好像增加了 webdav 同步,但是没有在设置里面增加同步选项,没法开启。

@Predidit
Copy link
Owner

@ErBWs 很棒的PR

不过我有下面几个问题

  1. 我们为什么要在 info_page 中重新实现一遍 SysAppBar 的退出按钮,理论上退出按钮是会被独立添加的,不会被其他传入的 actions 影响
  2. info_page 的 FloatingActionButton 的图标似乎有些丑,也许我们可以换一个
  3. 我们要不要在 info_page 上保留 summary ,至少在桌面平台保留,现在桌面平台的 info_page 过分空旷
  4. 我们能不能在调整一下 bangumi_item.dart 中 BangumiTags 的位置,可以新建一个文件,或是放在现有文件的尾部

关于两个疑问

  1. bangumiItem 会被保留在控制器中,这里的保存具体是指什么。此外这个实现缺乏之前的逻辑中避免重复请求的判断 (也就是之前关于 summary 是否为空或类似的判断)。虽然我们从API得到的数据一定是不全的,需要第二次请求,但是我们通过追番功能保存的 BangumiItem 会持久化到储存中,这里包含了我们所需的所有数据,不需要第二次请求。
  2. 这个功能没启用,原因在之前的 Issue 里提到过

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

  1. 重新实现的是原来的 fab 按钮,也就是使用浏览器打开规则的源网站 1deabd5

  2. 我不清楚什么按钮比较符合语义,也许可以推荐一个

  3. 可以

  4. 可以

  5. 具体表现就是更新后的 rank 和 tag 没有被保存下来。例如上面的图中是在没有增加 tag 之前收藏的,rank 原来是 1953。打开后进行更新,rank变为 1951,且详情页会显示 tag。关闭 info_page 再打开会变回没有 tag 和 1953 的状态,需要等待一会才能看到 tag 和 更新后的 rank。避免重复请求的判断被删除是因为番剧信息是会变化的,比如 rank 和 tag 点击数。理论上也可以在这里增加 连载中 · 10/12 或者 已完结 的标签,但是现有的请求好像做不到。

  6. 可惜。bangumi api 删除收藏相关的 api 还在 pr 中,不然通过 bangumi 登录进行收藏同步或许也可以

@Predidit
Copy link
Owner

Predidit commented Dec 22, 2024

@ErBWs

  1. 我的问题,看错了
  2. 也许可以在 https://fonts.google.com/icons 看看
  3. 问题在 /lib/bean/card/bangumi_card.dart 这里点击按钮就会根据自身属性更新 infoController.bangumiItem 我们也许可以在这里做一个判断,当infoController.bangumiItem 不为空且 bangumiItem.id 相同时不进行更新
    我希望尽可能减少重复的API调用,rank 和 tag 的变化不是很重要
  4. 也许我们可以等待PR完成后进行这项工作

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

最符合语义的我认为应该是 info,但感觉看起来怪怪的,所以后面换成了 expand
image
image

@Predidit
Copy link
Owner

那可以就先用 expand 吧,有合适的再改

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

才发现没法新增收藏,报错是这个

HiveError: Cannot write, unknown type: BangumiTag. Did you forget to register an adapter?

@Predidit
Copy link
Owner

Hive 没有办法直接存自定义的数据类型

需要把 BangumiTags 独立到一个单独的文件里,并为其分配 HiveType HiveField 等注解,并使用 build_runner 自动生成对应的 bangumi_tags..g.dart 其中会包含需要的 Adapter,然后在 /lib/utils/storage.dart 中注册对应的 adapter

新增的 adapter 不会破坏向前兼容性

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

原来如此,现在可以了

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

退出 info_page 后更新的 bangumiItem 没有被保存,不清楚怎么让他保存

这个应该是在 info_page 中更新后不会保存到本地,我尝试写了个更新本地存储的函数

@Predidit
Copy link
Owner

现在似乎缺少以下修改

我们要不要在 info_page 上保留 summary ,至少在桌面平台保留,现在桌面平台的 info_page 过分空旷

此外更新本地储存的函数逻辑可以修改一下,这里使用 try-catch 捕获的异常大多是来自 GStorage.collectibles.get(bangumiItem.id)! 断言,断言失败还会记录错误日志。

我们不应该那么多,我们也许应该为 GStorage.collectibles.get(bangumiItem.id) 为空执行单独的逻辑,而不是抛出错误

@ErBWs
Copy link
Contributor Author

ErBWs commented Dec 22, 2024

现在似乎缺少以下修改

忘记了(

@Predidit Predidit merged commit 1ee164b into Predidit:main Dec 22, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants