首页 > 解决方案 > Flutter:如何在 PageView 中嵌入多个水平 Webview

问题描述

我正在 Flutter 中制作 Epub 阅读器的原型。每章都显示在WebView中,这些 WebView 放置在PageView中。由于多列布局,每个 WebView 的内容都进行了分页:1 列 = 1 个可见页面。在水平滑动手势期间,预期的行为是让 WebView 的内容尽可能滚动,然后在 WebView 达到其限制时让 PageView 在页面之间滚动。注意:在 1 次滑动手势期间,两者都可能发生:WebView 先滚动,然后是 PageView。在 Android 上,由于过度滚动通知,它很容易处理,就像在这个代码中一样。

但是在 Flutter 中,WebView 是不可滚动的,我们不能使用OverscrollNotifications (AFAIK)。所以我有一些基于在 WebView 中注入 JS 代码以将滚动位置广播到 Flutter 端的工作解决方案,但这非常肮脏和令人沮丧,我讨厌这种代码......

有没有人有好的解决方案?提前非常感谢!

编辑:我有一个基于 Javascript 的新想法。我不会在滚动过程中不断向 Flutter 端发送滚动通知,而是在每个“章节”的开头和结尾插入透明像素,并仅在这些元素变得可见/不可见时向 Flutter 发送事件(感谢IntersectionObserver API)。但是这样的解决方案需要在章节的 HTML 中注入一些东西,这不是最好的解决方案。任何更好的想法仍然欢迎!

标签: flutterwebviewoverscrollflutter-pageview

解决方案


推荐阅读