Необработанное исключение: Поиск предка деактивированного виджета небезопасен.нажмите после перехода на нулевую безопасность

#flutter #dart #dart-null-safety #null-safety

#трепетать #дротик #дротик-нулевая безопасность #нулевая безопасность

Вопрос:

Я перенес все свои пакеты проекта в нулевую безопасность.

Из-за некоторых мыслей, которые я должен обрабатывать на Android (Kotlin), расширяя стороннюю библиотеку. После этого я получаю следующую ошибку:

 E/flutter (14210): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe. E/flutter (14210): At this point the state of the widget's element tree is no longer stable. E/flutter (14210): 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. E/flutter (14210): #0 Element._debugCheckStateIsActiveForAncestorLookup.lt;anonymous closuregt; 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.lt;anonymous closuregt;.lt;anonymous closuregt;.lt;anonymous closuregt;.lt;anonymous closuregt; 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): lt;asynchronous suspensiongt;  

и у меня есть следующий код:

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

Приведенный выше код вызывается RawMaterialButton виджетом, onPressed

Ответ №1:

попробуй вот так

 SchedulerBinding.instance.addPostFrameCallback((_) {  Navigator.pushNamedAndRemoveUntil(  context, '/', (_) =gt; false);  });