Native: comic panel box (xywh) is ignored
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start with the web reference in flutter_readium/web/src/mediaoverlay/syncNarration.ts and _syncDivinaToMediaOverlayLocator in ReadiumReader.ts, then inspect the iOS and Android guided-navigation item models and native comic navigators. Implement the listed parsing, locator propagation, and pan/zoom behavior on both platforms, including preventing iOS from publishing the box as a CSS selector. Done means comic cues pan to their panel with web-equivalent gating on both platforms.
Written by the indexing model from the issue text.
Description
Summary
Guided-navigation cues for comics can carry a panel box, e.g. imgref: "image0001.jpg#xywh=pixel:44,113,757,226". Web reads it and pans/zooms to the panel while the audio plays. iOS and Android ignore it, so they turn the page but always show the whole page.
Where it stands today
| Platform | Page turn on cue | Pan/zoom to panel |
|---|---|---|
| Web | ✅ | ✅ comicRegion → FlutterDivinaNavigator.panToRegion |
| iOS | ✅ | ❌ no xywh parsing anywhere |
| Android | ✅ (after #234) | ❌ no xywh parsing anywhere |
Related defect on iOS
iOS passes the raw imgref through as the item's text reference:
// GuidedNavigationDocument.swift
if let audio = obj.audioref, let text = obj.textref ?? obj.imgref {
FlutterMediaOverlayItem then splits on # and publishes the fragment as a CSS selector:
locator.locations.otherLocations["cssSelector"] = .string("#\(frag!)")
For a panel cue that yields cssSelector: "#xywh=pixel:44,113,757,226" — not a DOM id, and not a valid selector. It reaches Dart on every comic cue. Android avoids this (#234 drops the fragment); iOS still needs it handled, ideally by parsing the box instead of discarding it.
Suggested work
- Parse
#xywh=pixel:x,y,w,hin the iOS and Android guided-navigation item models. - Carry the box on the cue locator, the way web puts
comicRegioninotherLocations. - Pan/zoom the native comic navigators to the box, with the same auto-pan and manual-override gating web uses.
- Stop publishing the box as a
cssSelectoron iOS.
Web reference: flutter_readium/web/src/mediaoverlay/syncNarration.ts (parseImgField, textLocatorForItem) and _syncDivinaToMediaOverlayLocator in ReadiumReader.ts.
- Dominant language
- Dart
- Stars
- 35
- Forks
- 19
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 37
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Notalib/flutter_readium
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Notalib/flutter_readium#312 ·
Maintainers usually reply within 2 days
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
Notalib/flutter_readium#256 ·
Maintainers usually reply within 2 days
-
awaiting-reporter
Difficulty 4/5 3-5 days Newbie friendliness 30/100
Notalib/flutter_readium#254 · 1 comment ·
Maintainers usually reply within 2 days
-
investigate
Difficulty 4/5 3-5 days Newbie friendliness 52/100
Notalib/flutter_readium#229 · 15 comments ·
Maintainers usually reply within 2 days
-
upstream-issue
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Notalib/flutter_readium#143 · 1 comment ·
Maintainers usually reply within 2 days
All issues in Notalib/flutter_readium
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
customerio/customerio-flutter#441 ·
Maintainers usually reply within 2 days
-
JsonParseNode.getObjectValue returns non-null model on null JSON nodes and duplicates lifecycle hooksPossibly taken @hardikkaurani claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
microsoft/kiota-dart#170 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
fable-compiler/Fable#5280 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
immich-app/immich#33043 ·
Maintainers usually reply within 1 day
-
[FR] 希望能折叠搜索历史Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
bggRGjQaUbCoE/PiliPlus#3503 ·
Maintainers usually reply within 1 day