Флаттер: как встроить несколько горизонтальных веб-просмотров в PageView - PullRequest
1 голос
/ 30 января 2020

Я создаю прототип читателя Epub во Флаттере. Каждая глава отображается в WebView , и эти веб-представления помещаются в PageView . Содержимое каждого WebView разбито на страницы благодаря многоколоночной разметке: 1 столбец = 1 видимая страница. Во время жеста горизонтального пролистывания ожидаемое поведение состоит в том, чтобы прокручивать содержимое WebView, когда это возможно, и затем прокручивать PageView между страницами, как только WebView достигнет своего предела. Примечание: во время 1 жеста смахивания могут произойти оба: сначала прокрутка WebView, затем PageView. На Android это легко обрабатывается благодаря уведомлениям о превышении прокрутки, как в Этот код .

Но во Flutter WebViews не прокручиваются, и мы не можем использовать OverscrollNotifications (НАСКОЛЬКО МНЕ ИЗВЕСТНО). Итак, у меня есть несколько рабочих решений, основанных на введении JS кода в WebView для передачи позиции прокрутки в сторону флаттера, но это очень грязно и неприятно, я ненавижу этот вид кода ...

У кого-нибудь есть хорошее решение? Заранее большое спасибо!

РЕДАКТИРОВАТЬ: У меня есть новая идея, основанная на Javascript. Вместо того, чтобы непрерывно отправлять уведомления прокрутки на сторону Flutter во время прокрутки, я буду вставлять прозрачные пиксели в начале и конце каждой «главы» и отправлять события во Flutter только тогда, когда эти элементы станут видимыми / невидимыми (благодаря IntersectionObserver API ). Но такое решение требует введения материала в HTML главы, что не является лучшим решением. Любая лучшая идея все еще приветствуется!

...