AYLICRÉA Le tuto
AYLICRÉA

Tuto Site

Édition in-situ

Pas un champ JSON. Overlay panel si ShowPageSite.editMode == true (écran panel p_site_content, preview page). Public : absent (peintre deferred edit_deferred.dart, package viewEdit). Ce n’est pas le pos CMS : le crayon s’ancre via GlobalKey + localToGlobal.

Auteur panel
  toolbar  Icons.radio_button_checked_outlined  → SiteContentP.editButton
  toolbar  Icons.grid_4x4_outlined              → SiteContentP.editGrid
  toolbar  Icons.location_on                    → SiteContentP.editPosition
ShowPageSite(editMode: true, editGrid, editButton)
  ├─ chaque ViewPreView
  │     onion : 2× PosRectPainter  (grille / zone rouge)
  │     Container(key: keyWidget)  ← ancre mesure
  └─ Positioned.fill → PosButton
        editButton   → PosButtonEdit  (crayon Icons.edit)
        editPosition → PosAction      (poignée pos/taille, selected only)

Trois flags, trois overlays

FlagToolbarIcôneEffet
editButtonVoir boutonradio_button_checked_outlinedun crayon par view visible, ancré GlobalKey (pas pos CMS)
editGridVoir grillegrid_4x4_outlinedrectangles sur tous les views — selected = error 3 px
editPositionVoir bouton positionlocation_onpoignée drag pos/size, selected only

Ancre GlobalKey

La clé est après pad/rota/Positioned CMS : elle mesure la boîte interne (contenu), pas le pad externe. Si offset == null → pas de crayon.

Type viewAncrage
Folder / complexcrayon en haut (topLeft / topRight, flip pair/impair)
Leaf (text, button, image)crayon à mi-hauteur du bord (centerLeft / centerRight)

byPassFolder: true = tous les views de la page (racines et enfants). Un titre dans une column a son propre crayon. flip: i % 2 == 0 alterne gauche/droite.

Deux clics

  1. View non sélectionné → panel selectedElementURL: content.uuid.
  2. View déjà selected → popup ParamButton 280 px (pastilles text_fields, perm_media, style, visibilité…).

Deux cadres onion

PosRectPainter deux fois : externe = avec pad (zone externe, alpha 100) ; interne = sans pad (contenu = ancre crayon). Non-selected stroke 0 / onSurface. Selected = error 3 px. editGrid false : painters sautés — pas de rouge.

{
  "uuid": "<unique>",
  "uuid_page": "<P>"
}
Piège. Aucun champ JSON ne « crée » le crayon. Dupliquer un uuid casse l’ancre + la sélection panel. Une page JSON autonome (site public) n’a pas editMode.