La barre d'action passe en pied d'écran fixe (`bottomNavigationBar`), parce qu'un correctif juste mais hors du champ reste inaccessible : le geste se fait en haut de la liste, la barre était un écran entier plus bas. C'est le défaut d'hier sous une autre forme — cause de disposition au lieu de cause de logique. `bottomNavigationBar` plutôt qu'une superposition : il RÉDUIT la hauteur du corps au lieu de le recouvrir, donc rien ne se cache derrière la barre. ⚠️ ET LE DÉPLACEMENT A CASSÉ L'ÉCRAN. Le `Column` d'`ImpactSaveBar` était en `MainAxisSize.max` — le défaut. Dans un `ListView` la hauteur disponible est infinie et le Column se contente de ses enfants : le défaut ne pouvait pas se voir. En pied d'écran la contrainte est lâche mais BORNÉE, le Column a pris toute la hauteur, le corps a été écrasé à zéro. Écran vide sous une barre géante, vu en release sur appareil — les 319 tests étaient verts. Un widget qui ne se contraint pas lui-même hérite du contexte : le déplacer change ses contraintes, donc sa taille, sans qu'une ligne de son code ait bougé. Le test ajouté monte la barre dans un `bottomNavigationBar` et mesure sa hauteur. Éprouvé par son contraire : sans `mainAxisSize: min` il rend 600 sur 600 et échoue. Aucun test précédent ne pouvait mordre — tous montaient la barre dans une hauteur infinie, où `max` se comporte comme `min`. Vérifié sur appareil, chemin des flèches : brouillon réel -> barre en bas avec Annuler/Enregistrer, corps intact ; ordre rétabli -> « L'ordre est revenu à celui de la box » avec le seul « Terminer » ; Terminer -> barre absente. Banc inchangé, aucune écriture. Et la note gardée sur `draftIsNoOp` : « rien à enregistrer » veut dire « rien par rapport à ce que tu as vu ». Comparer à l'état vivant conclurait à la place de l'utilisateur sur des faits qu'il n'a pas vus. Le référentiel de la CONCLUSION et celui de l'ÉCRITURE sont deux choses, et il faut les deux. Capture : docs/captures/2026-09-08_barre-en-pied-terminer.png Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
etm_powersync_app
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Description
Languages
Dart
91.5%
C++
4.3%
CMake
3.3%
Swift
0.4%
HTML
0.3%
Other
0.2%