AYLICRÉA El tuto
AYLICRÉA

Tuto Site

Cebolla de colocación

Le leaf (id_text, id_image, id_button…) ne re-pad pas, ne se Theme pas, ne se Positioned pas. L’onion (lib/site/widget/view/core/onion.dart) l’a déjà fait. Ajouter un Padding « pour être sûr » double l’espace.

Ordre build — extérieur → intérieur

1  id_copy + uuid_copy valide
     → NOUVELLE ViewPreView (rewrite) — onion du nœud copy SAUTÉE
2  overflow image inStack (uuids hardcodés)
     → ClipRect > OverflowBox  (rare)
3  popView || inStack
     → PositionedWidget  ← JSON pos / center / time_*
4  rota.auto(false) ≠ 0
     → RotationTransition(turns:)  ← JSON rota  (1 = 360°)
5  Padding
     ← JSON pad  (zone _zoneWidth/_zoneHeight, isEnable = preEnable)
6  editGrid → PosRectPainter (externe = avec pad, interne = sans)
7  Container(key: keyWidget)     ← ancre crayon édition
8  Theme(colorScheme: colorContext(uuid_theme))
     ← JSON uuid_theme ViewDataString
9  viewWidget()  SizeGate + type dispatch
     ← width/height, type, title, image, uuid_action, pad_int, …

not_apply_constraint: true (re-entrée id_text chrome) : saute pad et rota.

isEnable onion = StyleThemeContentP.s.preEnable (session), pas content.enable (déjà filtré avant montage).

Zone utilisée par pad / pos / %

_zoneWidth  = maxWidth  == infinity ? P.size.mainW : maxWidth
_zoneHeight = maxHeight == infinity || == -1 ? P.size.appH : maxHeight
  • Racine flow : maxWidth = forceWidth, maxHeight souvent infinity → pad vertical % = % hauteur écran, pas hauteur page.
  • Pop : maxHeight = hauteur mesurée page.
  • Enfant folder : constraints LayoutBuilder parent.

SizeGate (après theme)

HelperQuiJSON
sizeFolderDecoFolderBasicwidth/height flexible + customDecoration
sizeFixeimage, vidéowidth et height calculés — box_fit dans cette boîte
sizeWidthcircle, text_animatedwidth only
sizeWidthFlexiblebuttonwidth 0 → hug
sizeAnimatedDecospace, page nested+ blur si blurIfNotLeve

Size 0 → null SizedBox (hug). Size < 0 déjà converti en 100 % zone avant SizeGate.

Ce que le leaf lit encore (légitime)

ChampOù
title style_titleSegment / wrap_text spans / ButtonSite
pad_intbouton, segment, image_deco
uuid_gradientwrap_text span ShaderMask ; folder déjà dans deco
uuid_actiononTap setAction
image box_fitServerImage
axis_alignfolder engine et wrap_text textAlign et Segment wrap
{
  "pad": { "l": { "iT": 24, "iB": 24, "iL": 0, "iR": 0, "iTT": "px", "iTB": "px" } },
  "pos": {},
  "rota": {},
  "uuid_theme": { "l": { "i": "f81ad0b2-fc67-45a8-aff9-f48d608d5f95" } }
}
Piège. Le JSON pose pad / pos / rota / uuid_theme. Le leaf ne les re-pose pas. Pas : pad, pos, uuid_theme dans le widget typé — sauf Segment qui re-lit border/radius pour son BoxDecoration (decoration: true).