es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepción no controlada: buscar el ancestro de un widget desactivado no es seguro Navigator.push después de la migración a seguridad nula.

He migrado todos mis paquetes del proyecto a la seguridad nula.

Debido a algunas cosas que tengo que manejar en Android (Kotlin), al extender una biblioteca de terceros.
Después de hacer eso, ahora recibo el siguiente error:

E/flutter (14210): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Excepción no controlada: No es seguro buscar el ancestro de un widget desactivado.
E/flutter (14210): En este punto, el estado del árbol de elementos del widget ya no es estable.
E/flutter (14210): Para referirse de manera segura al ancestro de un widget en su método dispose(), guarde una referencia al ancestro llamando a dependOnInheritedWidgetOfExactType() en el método didChangeDependencies() del widget.
E/flutter (14210): #0 Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure>
package:flutter/…/widgets/framework.dart:3944
E/flutter (14210): #1 Element._debugCheckStateIsActiveForAncestorLookup
package:flutter/…/widgets/framework.dart:3958
E/flutter (14210): #2 Element.findAncestorStateOfType
package:flutter/…/widgets/framework.dart:4005
E/flutter (14210): #3 Navigator.of
package:flutter/…/widgets/navigator.dart:2727
E/flutter (14210): #4 _PinCodeScreenState.build.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure>
package:vista/…/pin_code/pin_code.dart:274
E/flutter (14210): #5 _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (14210): #6 _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (14210): <asynchronous suspension>

y tengo el siguiente código:

Navigator.push(context, MaterialPageRoute(builder: (context) => MyScreen(response: _validatioResponse)));

El código anterior es llamado por el widget RawMaterialButton, en la propiedad onPressed

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el problema está relacionado con el estado del árbol de elementos del widget que no está estable, lo cual puede ser peligroso al intentar referirse a un ancestro del widget. La solución recomendada es guardar una referencia al ancestro llamando a dependOnInheritedWidgetOfExactType() en el método didChangeDependencies() del widget.

    Sin embargo, con base en la información proporcionada, es difícil determinar si esto es causado por la migración a la seguridad de nulos o por los cambios realizados para extender la biblioteca de terceros. Es posible que el widget RawMaterialButton no se esté eliminando correctamente, lo que está causando problemas con el árbol de elementos.

    Para solucionar el problema, puede ser útil revisar el código del widget MyScreen y su widget de estado asociado. También puede ser útil revisar cualquier cambio realizado en la biblioteca de terceros para ver si pueden estar causando problemas con la eliminación del widget.

Comments are closed.