Skip to content

0.0.16

Choose a tag to compare

@github-actions github-actions released this 23 Sep 20:30
· 7 commits to master since this release
38c4a6c

Fixed

  • dusk:fill, dusk:type and dusk:clear no longer write into a field on a route the visible one covers. The field is chosen by the largest overlap between each EditableText's rect and the ref's rect, over every editable in the tree. A route under an opaque one stays alive and laid out at its old rect, so a second instance of the same screen ties with the visible field and, visited first, won the tie. Reported from a consumer's login screen, where a login route sat on top of a redirected one: fill answered verified: true with the typed value while the visible field stayed empty, because the read-back came off the covered field's own controller; popping the top route showed the value in the form underneath. Only reproducible when the pages keep their exact rects, which is go_router's NoTransitionPage (what magic builds on web); a zoom or slide transition displaces the covered page and hides the tie. An editable under a TickerMode(enabled: false), which is how Overlay marks an entry below an opaque one, now ranks below every unmuted editable, overlapping or not: a handle found by its label carries the label's rect, and on a screen pushed over a lookalike that rect can overlap only the covered field. The muted fields are ranked only when nothing unmuted exists, so an app that mutes a visible form keeps its targeting. One gap is left open on purpose: such an app with an unmuted field elsewhere on screen (a search box) gets that field, because nothing in the ecosystem mutes a visible subtree and telling the two apart needs a hit test, which this package already documents as unreliable on web debug builds. type's actionability gate checks the ref's own rect, not the field this ranking resolves, so it does not refuse a wrong field either. Read by walking the ancestors rather than through TickerMode.of, which would subscribe the field to ticker changes from outside build, or getValuesNotifier, which needs Flutter 3.35. (lib/src/extensions/ext_text_input.dart, test/src/extensions/ext_text_input_test.dart) (#45)