如何使用Navigator.replace() and Navigator.replaceRouteBelow()。我在Navigator.dart中找到了这两个方法,并尝试了一下。从A导航到B,然后导航到C。在C中执行以下代码:
Navigator.replace(context,
oldRoute: MaterialPageRoute(builder: (context) => PushPageB()),
newRoute: MaterialPageRoute(builder: (context) => PushPageD()));和应用程序崩溃,这是日志:
手势捕获的异常
The following assertion was thrown while handling a gesture:
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 1673 pos 12:
'oldRoute._navigator == this': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new
When the exception was thrown, this was the stack:
2 NavigatorState.replace (package:flutter/src/widgets/navigator.dart:1673:12)
3 Navigator.replace (package:flutter/src/widgets/navigator.dart:1041:34)
4 ReplacePage.build.<anonymous closure> (package:flutter_navigation/replace_page_demo.dart:45:31)
5 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
6 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
7 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
8 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
9 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
10 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
11 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
12 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
13 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:143:19)
14 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
15 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
16 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
17 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
18 _invoke1 (dart:ui/hooks.dart:153:13)
19 _dispatchPointerDataPacket (dart:ui/hooks.dart:107:5)
(elided 2 frames from class _AssertionError)
Handler: onTap
Recognizer:
TapGestureRecognizer#7d65d(debugOwner: GestureDetector, state: possible,
won arena, finalPosition:
Offset(233.6, 383.8), sent tap down)发布于 2018-10-29 15:01:03
'oldRoute._navigator == this': is not true.显示需要旧路由等于以下值
另外,我从来不使用Navigator.replace,而是像这样使用
Route route = MaterialPageRoute(builder: (context) => MyHomePage());
Navigator.pushReplacement(context, route);希望能有所帮助
https://stackoverflow.com/questions/53040057
复制相似问题