Bug appel d’une fonction de navigation depuis un PopupMenuItem à cause de l’animation de fermeture

Bonjour à tous,

Dans un PopupMenuButton j’ai plusieurs options pour agir sur l’objet sur lequel je travaille dans ma vue, dont une d’édition. Cette option d’édition envoi vers une nouvelle page dédiée. Jusqu’à présent tout fonctionnait très bien.

Sauf que je me suis rendu compte que l’animation qui replie (ou ferme) le PopupMenuButton crée un bug : si je déclenche la navigation (à l’aide d’un navigation delegate) pendant cette animation, l’app freeze.

GPT me propose un workaround bien cochon qui ne me plait pas du tout :

Future.delayed(
      Duration(milliseconds:1000), //j'ai un peu forcé le trait avec le 1000... mais bon
      () => widget.viewModel.goToEdit(),

Alors oui ca marche, mais bon…

Je préfèrerai désactiver l’animation que je ne souhaite pas avoir ici, mais a priori ce n’est pas possible.

Est ce que quelqu’un a déjà rencontré ce problème et à trouver un moyen de désactiver l’animation, ou d’attendre proprement la fin de cette dernière ?

Pour info la version de Flutter : Flutter (Channel stable, 3.29.3

Et le message d’erreur brut : ════════ Exception caught by widgets library ═══════════════════════════════════ The following assertion was thrown building LayoutBuilder: Looking up a deactivated widget's ancestor is unsafe. At this point the state of the widget's element tree is no longer stable. To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.

… et ne pas croire chat GPT aveuglément :sweat_smile: quand il te dit « non c’est pas possible »…

Après un petit coup de google (oura il est toujours là !) voilà comment desactiver l’animation

PopupMenuButton(
    popUpAnimationStyle: AnimationStyle.noAnimation,
...