Reorderable
Listes & défilement
Équivalent natif du ReorderableListView de Flutter : une pile verticale d'items que l'utilisateur peut appui-long puis glisser pour réordonner. Comme Dismissible, tout le glisser-déposer (détection de l'appui long, suivi en direct, permutation des emplacements, animation de repos) est géré côté client par NativeCanvasView.kt ; PHP ne reçoit $action qu'au lâcher du doigt, avec le nouvel ordre des clés en suffixe ("{action}:key3,key1,key2").
Exemple
<?php
use Engine\Native\Reorderable;
use Engine\Native\Text;
use Engine\Native\Tokens;
$items = [
'task-1' => new Text('Rédiger le rapport', Tokens::TEXT_BODY, Tokens::ink()->toHex()),
'task-2' => new Text('Relire le budget', Tokens::TEXT_BODY, Tokens::ink()->toHex()),
'task-3' => new Text('Envoyer la facture', Tokens::TEXT_BODY, Tokens::ink()->toHex()),
];
$list = new Reorderable(
group: 'tasks',
items: $items,
action: 'reorder:tasks',
);Trois tâches réordonnables ; un glisser terminé déclenche reorder:tasks:task-2,task-1,task-3 (par exemple) que l'écran doit interpréter pour réécrire l'ordre persistant.
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| group | string | — | Identifiant du groupe de réorganisation, transmis à Canvas::reorderItem(). |
| items | array<string, Widget> | — | Items dans leur ordre initial, indexés par clé stable. |
| action | string | — | Action renvoyée une fois le glisser terminé, suffixée du nouvel ordre des clés. |
À savoir. Tous les items partagent la même largeur (celle du conteneur) ; seule la hauteur peut varier d'un item à l'autre. Réordonner un groupe disposé horizontalement n'est pas supporté.